Когда создаем программно документ нужно заполнить множество реквизитов. При создании документа вручную в форме документа срабатывают процедуры и функции, и нужные реквизиты заполняются.
Например, ПартнерПриИзменении(элемент), НоменклатураПриИзменении и т.д.
Окрыть или получить нужную форму документа можно так:
&НаКлиенте Процедура тест_заполнитьЧерезФорму(Команда) //форма=ПолучитьФорму("Документ.ПриобретениеТоваровУслуг.Форма.ФормаДокумента",Новый Структура("Ключ", объект.приобретениеТоваровУслуг)); // получаем форму не открывая. форма=ОткрытьФорму("Документ.ПриобретениеТоваровУслуг.Форма.ФормаДокумента",Новый Структура("Ключ", объект.приобретениеТоваровУслуг)); //тут вызываем нужные процедуры и функции модуля формы форма.записать(); КонецПроцедуры
1 Вариант. Можно вызывать только экспортные процедуры и функции из модуля формы
Проблема в том, что даже получив форму документа , можно выполнить только процедуры и функции у которых стоит Экспорт.
Вот такие процедуры можно выполнить.
Вот так вызываем ее:
&НаКлиенте Процедура тест_заполнитьЧерезФорму(Команда) //форма=ПолучитьФорму("Документ.ПриобретениеТоваровУслуг.Форма.ФормаДокумента",Новый Структура("Ключ", объект.приобретениеТоваровУслуг)); форма=ОткрытьФорму("Документ.ПриобретениеТоваровУслуг.Форма.ФормаДокумента",Новый Структура("Ключ", объект.приобретениеТоваровУслуг)); форма. ТоварыНоменклатураПриИзмененииВопросПользователюЗавершение(Результат, ДополнительныеПараметры) //вызываем экспортную процедуру формы, параметры результат и дополнительныеПараметры нужно описать заранее. форма.записать(); КонецПроцедуры
2 Вариант. Через расширение формы делаем нужную процедуру, которая вызывает нужные нам процедуры и функции модуля формы
Много нужных функций имеют экспорт.
Если же у нужной процедуры или функции нет признака экспорт, то можно сделать через расширение.
Добавляем в расширение форму документа , создаем там экспортную процедуру и вызываем в ней нужные без экспортные процедуры и функции формы.
Вот я создал в расширении формы Документы.ПриобретениеТоваровУслуг.формаДокумента:
Просто форму в расширение. Никаких реквизитов, команд не создаем, сразу идем в модуль формы(в расширении) и создаем процедуру
Код в форме расширения
&наКлиенте процедура _ПоступлениеИзЭксельПостОбработка() экспорт //используется обработкой загрузка поступлений из эксель. ОрганизацияПриИзменении(null); ПартнерПриИзмененииСервер(); //ПартнерПриИзменении(null); // не годится , вылезает вопрос перезаполнить цены по соглашению. КонтрагентПриИзменении(null); //ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияУсловийЗакупок(); //соглашение при изменении //тч Товары для каждого стр из объект.Товары цикл элементы.Товары.ТекущаяСтрока=стр.ПолучитьИдентификатор(); //вот так правильно!!!!!!!!! ценаБыла=элементы.товары.ТекущиеДанные.цена; //приИзменииВидаТЧ1(истина); ТоварыНоменклатураПриИзменении(Неопределено); ТоварыНоменклатураПриИзмененииВопросПользователюЗавершение(истина,новый структура("ТекущаяСтрока", элементы.Товары.ТекущиеДанные)); //возвращаем цену которая была элементы.товары.ТекущиеДанные.цена=ценаБыла; ТоварыЦенаПриИзменении(неопределено); конецЦикла; // конецПроцедуры
Код в обработке где делаем документ Приобретение товаров услуг:
&НаКлиенте Процедура тест_заполнитьЧерезФорму(Команда) //форма=ПолучитьФорму("Документ.ПриобретениеТоваровУслуг.Форма.ФормаДокумента",Новый Структура("Ключ", объект.приобретениеТоваровУслуг)); // получаем форму не открывая. форма=ОткрытьФорму("Документ.ПриобретениеТоваровУслуг.Форма.ФормаДокумента",Новый Структура("Ключ", объект.приобретениеТоваровУслуг)); форма._ПоступлениеИзЭксельПостОбработка(); //вывзываем процедуру из расширения форма.записать(); КонецПроцедуры

