Вход | Регистрация


1С:Предприятие ::

Метки: 

Опять Ут и УФ, помогите разобраться

Я
   Kigo_Kigo
 
09.02.18 - 13:21
Ребят, честно я тока учусь этим УФ, не пинайте сильно, лузер в в 8.3-ке, но честно пытаюсь во всем разобраться, сам серт. спец по клюшкам, вот настало для меня время пинать снеговиков с УФ, смотрите такая задача, есть реквизит на форме таблица значений(та которая не хранимая в бд, хранить ее смысла нет), на клиенте вызываю процедуру на сервере,эта процедура обрашается в функцию общего модуля, она выплевывает мне ответом таблицу значений, мне этой таблицей надо заполнить таблицу значений на форме
раньше работало вот так
ИнформацияОтСервера = Окомпании.ПолучитьИнформациюОКомпании(Объект.КодСкидки);
теперь он меня посылет по адресу
Нельзя изменять поле, содержащее объект данных формы
я понимаю что теперь так делать низяя, подскажите как надо?
 
 
   Рэйв
 
1 - 09.02.18 - 13:27
ЗначениеВРеквизитФормы() тебе в помощь.
   Рэйв
 
2 - 09.02.18 - 13:28
только тз должна совпадать по именам и количеству полей
   AlexTim03
 
3 - 09.02.18 - 13:28
ЗначениеВРеквизитФормы(ИнформацияОтСервера , "ИмяТаблицыНаФорме")
   AlexTim03
 
4 - 09.02.18 - 13:30
Или обойти полученную таблицу и добавлять запись построчно:
Для каждого Строка из ИнформацияОтСервера  Цикл
  НоваяСтрока = ТвояТаблицаНаФорме.Добавить();
  ////тут заполнение

КонецЦикла
   Kigo_Kigo
 
5 - 09.02.18 - 14:02
Теперь вроде прогружается , но как теперь работать то с ней
    ИскомаяСтрокаБаллов = ИнформацияОтСервера.Найти("КоличествоИмеющихсяБаллов","Поле");
Метод не обнаружен Найти, на клиенте нельзя возится с ТЗ?
   Kigo_Kigo
 
6 - 09.02.18 - 14:05
Это трындец какой то задачу которую бы в клюшках и 8.2 написал бы за 10 минут, в УФ бьюсь уже 2-й день
   Kigo_Kigo
 
7 - 09.02.18 - 14:28
Я понимаю вопрос ламера
Ребят как теперь на "ты" обратится к этой таблице значений, и найти значения которые меня интересуют?
   ildary
 
8 - 09.02.18 - 14:31
(5) зачем на клиенте возиться с ТЗ, если она расположена на сервере, а на клиенте не она, а её отображение.
   drcrasher
 
9 - 09.02.18 - 14:32
ТЗ - реквизит формы. на сервере заполняшь её данными (4) и там же всё дёргаешь.
между клиентом и сервером ТЗ не ездит, на клиенте вообще нет таблицы значений
   Kigo_Kigo
 
10 - 09.02.18 - 14:32
(8) эта ТЗ болтается как реквизит формы
 
 Рекламное место пустует
   Kigo_Kigo
 
11 - 09.02.18 - 14:32
(9) Понял, сейчас попробую
   Rema Dan
 
12 - 09.02.18 - 14:33
(5) ТЗ в форме представляет из себя ДанныеФормыКоллекция. Для неё нет найти, но есть НайтиСтроки()
   dezss
 
13 - 09.02.18 - 14:49
(6) угу...но когда втянешься, понравится логичность и стройность УФ.
(12) + 1...зачем нагружать сервер, если реквизит можно на клиенте изменять
   xxTANATORxx
 
14 - 09.02.18 - 14:50
(12)это из-за того что предполагается что твой код должен автоматом работать как и в тонком клиенте так и в веб клиенте, а это накладывает требования к разработке
   FIXXXL
 
15 - 09.02.18 - 14:53
(13) (12) 
ДанныеФормыКоллекция (FormDataCollection)
НайтиСтроки (FindRows)

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).
Вызов метода выполняет обращение к серверу.

внимание на последнюю строку :)
лучше все на сервере
   Rema Dan
 
16 - 09.02.18 - 15:01
(15) ТС не указал работает ли он в серверном или клиентском коде формы. Без использования РеквизитФормыВЗначение() его таблица всё равно будет ДанныеФормыКоллекция.
   dezss
 
17 - 09.02.18 - 15:03
(15) интересно, а он делает контекстный вызов или нет...
   Kigo_Kigo
 
18 - 09.02.18 - 15:05
(12) Занятненько
Пример:

ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Номенклатура", ТекТовар);
НайденныеСтроки = Состав.НайтиСтроки(ПараметрыОтбора); 

то есть надо еще нагрузить структурой, полить в ответ массив, перебрать массив в поиске нужного значения?
Ну офигеть логика, вместо простого найти
или есть более гуманные способы?
   drcrasher
 
19 - 09.02.18 - 15:06
(17) контекстный конечно. без контекста просто не существуют формы на сервере
   Вафель
 
20 - 09.02.18 - 15:06
Можно и так 
ЭтаФорма.Таблица.Загрузить(Ответ);
   drcrasher
 
21 - 09.02.18 - 15:07
(18) а зачем перебирать? в структуру складываешь все параметры отбора "И" и получаешь 1 строку. не?
если у тебя точно не повторяется номенклатура, то на сервере так тз.найти() можно
   FIXXXL
 
22 - 09.02.18 - 15:08
(16) ДанныеФормыКоллекция (FormDataCollection)
Загрузить (Load)
   Kigo_Kigo
 
23 - 09.02.18 - 15:15
(21) Я по этому и храню до закрытия документа ТЗ как реквизит формы, потому что к ней еще надо обратится из других модулей
   drcrasher
 
24 - 09.02.18 - 15:19
(23) что-то мне посказывает, что ты решаешь задачу изначально не верным способом
   Kigo_Kigo
 
25 - 09.02.18 - 15:25
(24) Я пытаюсь перенести то что работало на прежних версиях, на новую, то что когда то дорабатывал на 8.2, а теперь вот это все :)
параллельно пытаюсь разобраться, как это все фурычит по новому, я понимаю что здесь бы надо сделать через структуру, тем более что в тз 2 колонки, но с ТЗ тоже надо научиться работать
   dezss
 
26 - 09.02.18 - 15:26
(25) решать задачу с использованием ТЗ только по-тому, что "с ТЗ тоже надо научиться работать", как-то неправильно
   drcrasher
 
27 - 09.02.18 - 15:30
(25) если две колонки и есть номенклатура, я бы смотрел в сторону соответствия. а тз - часто зло %)
   Kigo_Kigo
 
28 - 09.02.18 - 15:30
(26) Потому что эта ТЗ в других блока фигурирует, я имел ввиду, что запрос на сервер в общем модуле можно было сделать и получить ответ в структуре, но ее тоже надо сохранить, что бы в процессе пользоваться из других модулей, а так же там некоторые дае читаются при проведении, точнее должны считываться, я еще до этого не добрался
   drcrasher
 
29 - 09.02.18 - 15:31
(28) курить галку "повторного использования" у общих модулей
   Kigo_Kigo
 
30 - 09.02.18 - 15:32
(27) Там вебзапрос, куда вываливаются данные о клиенте, скидке, баллах и так далее, это все я уже адаптировал,вот теперь пытаюсь это все форме распихать
   Kigo_Kigo
 
31 - 09.02.18 - 15:38
И еще, что бы не плодить тем спрошу, раньше вот такой код работал
    ФормаЗапросаСкидки = ЭтотОбъект.ПолучитьФорму("ФормаСкидки");
    ИнформацияОтСервера = ФормаЗапросаСкидки.ОткрытьМодально();

как теперь открыть допольнительную форму этого же документа?
   dezss
 
32 - 09.02.18 - 15:40
(31) ОткрытьФормуМодально
   Kigo_Kigo
 
33 - 09.02.18 - 15:43
(32) {Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента.Форма(7867)}: Метод объекта не обнаружен (ПолучитьФорму)
 ФормаЗапросаСкидки = ЭтотОбъект.ПолучитьФорму("ФормаСкидки");
 
 
   dezss
 
34 - 09.02.18 - 15:46
(33) я не писал получитьформу
Глобальный контекст (Global context)
ОткрытьФормуМодально (OpenFormModal)
Вариант синтаксиса: По названию

Синтаксис:

ОткрытьФормуМодально(<ИмяФормы>, <Параметры>, <Владелец>, <НавигационнаяСсылка>)
Параметры:

<ИмяФормы> (обязательный)

Тип: Строка.
Имя формы. Образуется как полный путь к объекту метаданных Форма (например, "Справочник.Контрагенты.Форма.ФормаОбъекта") или как полный путь к прикладному объекту, дополненный именем формы по умолчанию (например, "Справочник.Товары.ФормаВыбора").
Имена форм по умолчанию:
ФормаОбъекта (ObjectForm) - форма объекта по умолчанию; 
ФормаГруппы (FolderForm) - форма группы по умолчанию; 
ФормаЗаписи (RecordForm) - форма записи регистра по умолчанию; 
ФормаСписка (ListForm) - форма списка по умолчанию; 
ФормаВыбора (ChoiceForm) - форма выбора по умолчанию; 
ФормаВыбораГруппы (FolderChoiceForm) - форма выбора группы по умолчанию; 
ФормаКонстант (ConstantsForm) - форма констант по умолчанию для обычного режима, установленная как форма констант для конфигурации; 
Форма (Form) - форма константы, отчета и обработки по умолчанию; 
ФормаНастроек (SettingsForm) - форма настроек отчета по умолчанию; 
ФормаЗагрузки (LoadForm) - форма загрузки настроек; 
ФормаСохранения (SaveForm) - форма сохранения настроек; 
ФормаВарианта (VariantForm) - форма редактирования варианта отчета; 
ФормаПоиска (SearchForm) - форма полнотекстового поиска в данных.
<Параметры> (необязательный)

Тип: Структура.
Параметры формы. Ключ структуры - имя параметра, а значение - значение параметра формы. Имя элемента должно совпадать с именем параметра структуры.
П = Новый Структура("Ключ", Поставщик);
Форма = ПолучитьФорму("Справочник.Контрагенты.ФормаОбъекта", П);
Форма.Открыть();
 

<Владелец> (необязательный)

Владелец формы - форма или элемент управления другой формы. 
<НавигационнаяСсылка> (необязательный)

Тип: Строка, Неопределено.
Если содержит значение, отличное от Неопределено, то это значение присваивается свойству НавигационнаяСсылка формы, полученной в результате вызова данного метода, и свойство АвтоНавигационнаяСсылка этой формы устанавливается в Ложь.
Значение по умолчанию: Неопределено.
   Вафель
 
35 - 09.02.18 - 15:48
И не забывать что модально то теперь нельзя, нужно на оповещениях
   dezss
 
36 - 09.02.18 - 15:49
(35) иногда можно)
   Вафель
 
37 - 09.02.18 - 15:50
(36) вроде в послдених уже запретили, разве нет?
   dezss
 
38 - 09.02.18 - 15:51
(37) ну это на типовых...что у ТС, я хз...
   Вафель
 
39 - 09.02.18 - 15:52
(38) ну вроде он в теме указывет УТ
   dezss
 
40 - 09.02.18 - 15:52
(39) и что...не факт, что она типовая...да и не известно, какая версия...
   Kigo_Kigo
 
41 - 09.02.18 - 15:57
СсылкаНаЭтотОбъект  = Новый Структура("Ключ",ЭтотОбъект);

    ОткрытьФормуМодально("Документ.РеализацияТоваровУслуг.Форма.ФормаСкидки",,,СсылкаНаЭтотОбъект)//ФормаЗапросаСкидки.ОткрытьМодально();


Пишет, что использование модального режима запрещено, но все равно открывает модально, но новый документ, а мне надо дополнительную форму этого объекта
   Вафель
 
42 - 09.02.18 - 15:58
я же говорил )))
   drcrasher
 
43 - 09.02.18 - 15:59
не надо открыть форму модально, надо открыть форму с блокировкой всего интерфеса
   drcrasher
 
44 - 09.02.18 - 16:00
за "модально" и прочие выбратьзначение() зао "1с" разворачивает конфы в пять минут - это грубое нарушение в целом и "совместимо" в частности
   drcrasher
 
45 - 09.02.18 - 16:02
(41) не этотОбъект, а этотОбъект.Ссылка.
через структуру исключительно ссылку можно передать
   Kigo_Kigo
 
46 - 09.02.18 - 16:05
(43) РукаЛицо, во набуивертили, прастихоспади, а это как если не секрет?
(44) Там ситуация такая чтобы пользователь не мог вильнуть влево вправо, запрос с веб сервера скидки и балов, ввод списания баллов, отправить данные на вебсервер, закрытие проведение, ТолькоПросмотр
(45) Ругается на Ссылку , этотОбъект.Ссылка. так я сразу написал, не пракаттило
   Mankubus
 
47 - 09.02.18 - 16:07
(46) объект.ссылка
   Kigo_Kigo
 
48 - 09.02.18 - 16:10
(47) Открывает, все равно новый, попробую не модально
   drcrasher
 
49 - 09.02.18 - 16:10
(46) ОткрытьФорму() и в последнем параметре РежимОткрытияОкнаФормы.БлокироватьВеcьИнтерфейс
 
 Рекламное место пустует
   dezss
 
50 - 09.02.18 - 16:11
(48) а ты точно в тот параметр структуру пихаешь?
вроде ж параметры открытия 2-й параметр?
   drcrasher
 
51 - 09.02.18 - 16:13
(50 точно.  а не вроде
   dezss
 
52 - 09.02.18 - 16:14
(51) Так он структуру в навигационную ссылку пихал? О_о
а чего тогда не было ошибки о том, что параметры не те?
   drcrasher
 
53 - 09.02.18 - 16:16
(52) спасибо товарищам из 1с за это: всё, что имеет строковое представление (в данном случае "Структура") может быть записано в реквизит типа строка.
   Kigo_Kigo
 
54 - 09.02.18 - 16:27
(49) (50) (51) (52) (53) (47) (49) (47)
Спасибо, взлетело, открывается с блокировкой интерфейса, без предупреждений
   Kigo_Kigo
 
55 - 09.02.18 - 16:49
Ога фигушки, код то продолжает выполняться, а мне надо чтобы он дождался закрытия формы, так что наверно без модально никак
   drcrasher
 
56 - 09.02.18 - 16:51
(55) поздравляю, вы познакомились с асинхронными вызовами.

курить открытьФорму() параметр ОписаниеОповещенияОЗакрытии и Новый ОписаниеОповещения.


это не страшно, но по первости может быть неочевидно
   drcrasher
 
57 - 09.02.18 - 16:54
+(56) кратенько:
1. открыть форму с указанием оповещения;
2. потыкать кнопочки и закрыть форму своей кнопкой Закрыть(ДанныеКоторыеНужноОбработать);
3. в обработчике оповещения (РезультатИзФормы, ДопПараметры) _экспорт_ если результатИзФормы не равно неопределно - чтото сделать с результатом из формы.
   Sapiens_bru
 
58 - 09.02.18 - 17:43
(56) "это не страшно, но по первости может быть неочевидно"
Я тут на днях курил коллбэки в фрагменты на андроиде через интерфейсы. Вроде вкурил.
После этого одинЭсные оповещения кажутся добрыми, милыми, будто базовыми понятиями.

Воистину говорят - хочешь полюбить 1С УФ , ознакомься с разработкой клиент-серверных приложений каком-то "настоящем" языке и общемировом фреймворке. Сразу ясно становится почему и как оно движется и сколько сил/нервов сэкономила 1С своим программистам.
   Kigo_Kigo
 
59 - 09.02.18 - 17:47
(56) (57) Делал вот так, почему перед открытием она скачет по всем функциям и процедурам?
И есстественно вываливается с ошибкой в попытке прочитать не прочитаемое, прочитаемое должно из формы прилететь

Функция ВыборЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
    
    Если РезультатЗакрытия = Неопределено Тогда
        
        Сообщить("Ничего не выбрано.");
        
    Иначе
       ВыполненоЗакрытеФормыБаллов();
        
    КонецЕсли;
    
КонецФункции

&Наклиенте
Процедура ОсновныеДействияФормыСкидкаUDS(Кнопка)
    //ФормаЗапросаСкидки = Объект.ПолучитьФорму("ФормаСкидкиUDS");

    СсылкаНаЭтотОбъект  = Новый Структура("Ключ",Объект.Ссылка);

    ОткрытьФорму("Документ.РасходнаяНакладная.Форма.ФормаСкидки",СсылкаНаЭтотОбъект,,,,,ВыборЗавершение("ВыборЗавершение", Объект))//ФормаЗапросаСкидки.ОткрытьМодально();

    
    
КонецПроцедуры
#КонецОбласти



Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует