Когда создаем программно документ нужно заполнить множество реквизитов. При создании документа вручную в форме документа срабатывают процедуры и функции, и нужные реквизиты заполняются.

 

 

Например, ПартнерПриИзменении(элемент), НоменклатураПриИзменении и т.д.

 

Окрыть или получить нужную форму документа можно так:

&НаКлиенте

Процедура тест_заполнитьЧерезФорму(Команда)

//форма=ПолучитьФорму("Документ.ПриобретениеТоваровУслуг.Форма.ФормаДокумента",Новый Структура("Ключ", объект.приобретениеТоваровУслуг)); // получаем форму не открывая.     

форма=ОткрытьФорму("Документ.ПриобретениеТоваровУслуг.Форма.ФормаДокумента",Новый Структура("Ключ", объект.приобретениеТоваровУслуг));

//тут вызываем нужные процедуры и функции модуля формы

форма.записать();

КонецПроцедуры

 

1 Вариант. Можно вызывать только экспортные процедуры и функции из модуля формы

Проблема в том, что даже получив форму документа , можно выполнить только процедуры и функции у которых стоит Экспорт.

Вот такие процедуры можно выполнить.

export proc

 

Вот так вызываем ее:

&НаКлиенте

Процедура тест_заполнитьЧерезФорму(Команда)

//форма=ПолучитьФорму("Документ.ПриобретениеТоваровУслуг.Форма.ФормаДокумента",Новый Структура("Ключ", объект.приобретениеТоваровУслуг));      

форма=ОткрытьФорму("Документ.ПриобретениеТоваровУслуг.Форма.ФормаДокумента",Новый Структура("Ключ", объект.приобретениеТоваровУслуг));

форма. ТоварыНоменклатураПриИзмененииВопросПользователюЗавершение(Результат, ДополнительныеПараметры) //вызываем экспортную процедуру формы, параметры результат и дополнительныеПараметры нужно описать заранее.

форма.записать();

КонецПроцедуры

 

 

2 Вариант. Через расширение формы делаем нужную процедуру, которая вызывает нужные нам процедуры и функции модуля формы

Много нужных функций имеют экспорт.

Если же у нужной процедуры или функции нет признака экспорт, то можно сделать через расширение.

Добавляем в расширение форму документа , создаем там экспортную процедуру и вызываем в ней нужные без экспортные процедуры и функции формы.

Вот я создал в расширении формы Документы.ПриобретениеТоваровУслуг.формаДокумента:

Просто форму в расширение. Никаких реквизитов, команд не создаем, сразу идем в модуль формы(в расширении) и создаем процедуру

 

Код в форме расширения

&наКлиенте

процедура _ПоступлениеИзЭксельПостОбработка() экспорт //используется обработкой загрузка поступлений из эксель.

ОрганизацияПриИзменении(null);             

ПартнерПриИзмененииСервер();

//ПартнерПриИзменении(null); // не годится , вылезает вопрос перезаполнить цены по соглашению.

КонтрагентПриИзменении(null);

//ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияУсловийЗакупок(); //соглашение при изменении

//тч Товары

для каждого стр из объект.Товары цикл

элементы.Товары.ТекущаяСтрока=стр.ПолучитьИдентификатор();      //вот так правильно!!!!!!!!!

ценаБыла=элементы.товары.ТекущиеДанные.цена;

//приИзменииВидаТЧ1(истина);

ТоварыНоменклатураПриИзменении(Неопределено);

ТоварыНоменклатураПриИзмененииВопросПользователюЗавершение(истина,новый структура("ТекущаяСтрока", элементы.Товары.ТекущиеДанные));

//возвращаем цену которая была

элементы.товары.ТекущиеДанные.цена=ценаБыла;

ТоварыЦенаПриИзменении(неопределено);

конецЦикла;

//

конецПроцедуры

 

Код в обработке где делаем документ Приобретение товаров услуг:

&НаКлиенте

Процедура тест_заполнитьЧерезФорму(Команда)

//форма=ПолучитьФорму("Документ.ПриобретениеТоваровУслуг.Форма.ФормаДокумента",Новый Структура("Ключ", объект.приобретениеТоваровУслуг)); // получаем форму не открывая.     

форма=ОткрытьФорму("Документ.ПриобретениеТоваровУслуг.Форма.ФормаДокумента",Новый Структура("Ключ", объект.приобретениеТоваровУслуг));

форма._ПоступлениеИзЭксельПостОбработка(); //вывзываем процедуру из расширения

форма.записать();

КонецПроцедуры