Как обхитрить документ

Вчера столкнулся с необходимостью программно ввести акт оказания услуг на основании счета-фактуры в стандартной Бухгалтерии для Украины. Сначала было принялся писать обработку заполнения по очереди всех реквизитов, но вспомнил, что в форме документа описана стандартная процедура ВводНаОсновании() и решил использовать ее. В отличии от восьмой версии, в семерке нельзя обратиться к процедурам, описанным в форме документа как к методам объекта, поэтому приходится немного хитрить.

Можно придумать разные варианты, приведу один для примера. Создаю объект “Документ.ОказаниеУслуг”, создаю новый документ, в поле Заказ у вновь созданного объекта ввожу документ, на основании которого будет выполнено заполнение, т.е. ссылку на счет, записываю, чтобы создался объект данных, и теперь даю команду открыть форму этого вновь созданного документа с параметром “Авто”.

2010-09-02_084614

Здесь использована процедура ОткрытьФормуМодально(), чтобы исполнение кода не пошло дальше, а дождалось закрытия открытой формы документа. Теперь в модуль формы документа нужно вставить обработку переданного параметра:

2010-09-02_084948Т.е. вставленная при вызове ОткрытьФормуМодально() переменная или какое-либо значение  теперь доступно в форме документа как Форма.Параметр. Осталось в процедуре ВводНаОсновании() добавить команды записи и закрытия формы:

2010-09-02_085310Они расположены непосредственно перед завершением процедуры. Вот собственно и всё. Аналогичным образом можно организовать программный вызов печати документа.