Имя: Пароль:
1C
1С v8
УФ. Заполнение формы документа из обработки
, ,
0 pessok
 
23.11.12
13:04
Коллеги, привет. Помню, что уже создавал подобную тему, но тогда так и не докурил, а потом было некогда. И вот решил снова раскуриться с УФ.
Идея простая. Есть документ, из него вызывается обработка, в обработке заполняются данные, а при вызове команды формы, эти данные надо поместить в форму документа. Писать ДокументОбъект не надо, надо только отобразить на форме.

Чую, что лезу не в те дебри, потому, пока не накосяпурил, решил испросить совета бывалых :)

З.Ы. Вероятно я не до конца понимаю механизмы УФ, потому ошибки могут быть глупыми.

З.З.Ы. Код:

Форма документа:

&НаКлиенте
Процедура ЗаполнитьТаблицу(Команда)
   
   Если Объект.Услуги.Количество() > 0 Тогда
       Ответ = Вопрос("Табличная часть не пуста. Продолжить заполнение?", РежимДиалогаВопрос.ДаНет);
       
       Если Ответ <> КодВозвратаДиалога.Да Тогда
           Возврат;
       КонецЕсли;
   КонецЕсли;
   
   ФормаОбработки = ПолучитьФорму("Обработка.ЗаполнитьТаблицу.Форма.Форма", , ЭтаФорма);
   ФормаОбработки.ОткрытьМодально();
       
КонецПроцедуры

Форма обработки:

&НаКлиенте
Процедура ЗаполнитьТаблицуДокумента(Команда)
   
       ФормаДокумента = ЭтаФорма.ВладелецФормы;
   ДФСОбъект = ФормаДокумента.Объект;
   ЗаполнитьДокументОснование(ДФСОбъект);
   
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьДокументОснование(ДФСОбъект)
   
   ТЗ = ПолучитьДанныеЗаполнения();
   Если ТЗ.Количество() = 0 Тогда
       
       ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не найдено данных для заполнения табличной части");
       
       Возврат;
       
   КонецЕсли;
   
   Для каждого СтрТЗ Из ТЗ Цикл
       
       ЗаполнитьЗначенияСвойств(ДФСОбъект.Услуги.Добавить(), СтрТЗ);
       
   КонецЦикла;
   
КонецПроцедуры


В ДанныеФормыСтруктура владельца(сиречь формы документа) пишет, но на форме ничего не отображается. Подозреваю, что надо писать в ДокументОбъект, но не уверен. И вообще, чего умного можно по УФ почитать?

Заранее благодарю за помощь :)
1 pessok
 
23.11.12
13:17
переписал чутка, но эффекта все равно 0 :(

&НаСервере
Процедура ЗаполнитьДокументОснование(ДФСОбъект)
   
   ДокументОбъект = ДанныеФормыВЗначение(ДФСОбъект, Тип("ДокументОбъект.ПриложениеКонтрагента"));
   
   ТЗ = ПолучитьДанныеЗаполнения();
   Если ТЗ.Количество() = 0 Тогда
       
       ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не найдено данных для заполнения табличной части");
       
       Возврат;
       
   КонецЕсли;
   
   Для каждого СтрТЗ Из ТЗ Цикл
       
       ЗаполнитьЗначенияСвойств(ДокументОбъект.Услуги.Добавить(), СтрТЗ);
       
   КонецЦикла;
   
КонецПроцедуры
2 pessok
 
23.11.12
13:21
++ если после цикла записать ДокументОбъект, то после переоткрытия все ок, что и неудивительно
3 Buster007
 
23.11.12
13:23
СП Оповестить
4 pessok
 
23.11.12
13:25
(3) щас вкурю
5 esquire
 
23.11.12
13:27
ЗаполнитьЗначенияСвойств(ДокументОбъект.ЭлементыФормы.Услуги.Добавить(), СтрТЗ);
попробуй так
6 esquire
 
23.11.12
13:28
ЗаполнитьЗначенияСвойств(ФормаДокумента.ЭлементыФормы.Услуги.Добавить(), СтрТЗ);
вернее так
7 pessok
 
23.11.12
13:31
(5) я ж на сервере заполняю...
8 pessok
 
23.11.12
13:32
(3) блин, что-то не пойму, с какого бока мне тут цеплять обработчик ожидания..
9 pessok
 
23.11.12
13:34
после закрытия обработки, если объект не записан, все изменения теряются... посему хз, в объет ли писать. если писать в ДанныеФормыСтруктура, то вроде как должно бы работать(это как в сакмом первом варианте, но где-то потом не идет обновление)
10 esquire
 
23.11.12
13:43
в УТ в подборе номенклатуры подобное организовано, в функцию обработка подбора передаешь строку и она пишет в объект и в элементы формы,но как это релизовано не вникал
11 pessok
 
23.11.12
13:46
в 11 УТ?
12 esquire
 
23.11.12
13:56
10.3, в 11 не знаю
13 pessok
 
23.11.12
14:24
в обычных формах это на раз делается. в шапке же речь про УФ
14 pessok
 
23.11.12
14:42
ап. наверняка же вопрос возникал, ткните носом, плз
15 GROOVY
 
23.11.12
14:44
Заполнение открываемой формы объекта (УФ) должно производится в модуле объекта. параметры для заполнения передаются с помощью метода ОткрытьФорму или ПолучитьФорму.
16 pessok
 
23.11.12
14:48
(15) таааак. теплее. т.е. в обработке я должен вернуть нечто (ТЗ, к примеру) некоей серверной процедуре объекта, а уже в ней, заполнять сам текущий объект, верно?
17 LAAry
 
23.11.12
14:51
(16) а потом ЗначениеВДанныеФормы
18 pessok
 
23.11.12
14:57
(16) взлетело, сенькс
(17) а это уже необязательно в контексте моей задачи, но все равно - спасибо. Действительно, подход был неверным.
Заметка:
сильно помогло: http://nashe1c.ru/materials-view.jsp?id=345
19 pessok
 
23.11.12
14:57
(18) 2 (15) и (17) в смысле
20 pessok
 
23.11.12
14:58
+(19) а, гоню, надо (17)
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn