09.12.2009

Как выполнить ввод на основании программно?

Обычно, в большинстве случаев когда объект вводится на основании, нужно открыть пользователю форму нового объекта, который введен на основании какого-то объекта. В этом случае достаточно просто открыть форму и передать туда параметр Основание:

Копировать в буфер обмена

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

При этом отработает процедура ОбработкаЗаполнения в модуле объекта и, соответственно, те алгоритмы заполнения, которые в ней описаны.

Если же вводится объект на основании, и его сразу же надо записать не показывая форму пользователю, то тогда используется метод объекта Заполнить(). Создается новый объект, у него вызывается метод Заполнить(), в который передается значение, на основании которого должен быть создан этот объект.

Копировать в буфер обмена

НовыйДокумент = Документы.РасходнаяНакладная.СоздатьДокумент();
НовыйДокумент.Заполнить(ВыбранныйКлиент);

В результате этих действий будет выполнен обработчик события ОбработкаЗаполнения(), расположенный в модуле нового объекта.

Следует заметить, что событие ОбработкаЗаполнения есть не только у объектных данных (документов, справочников и т.п.), но и у регистра сведений, в модуле объекта РегистрСведенийНаборЗаписей.<имя>.

Подробнее о заполнении новых объектов данными можно посмотреть в вопросе "Как при открытии формы определить, что создается новый элемент?".