Обычно, в большинстве случаев когда объект вводится на основании, нужно открыть пользователю форму нового объекта, который введен на основании какого-то объекта.
В этом случае достаточно просто передать параметр Основание в процедуру открытия формы:
При этом отработает процедура ОбработкаЗаполнения в модуле объекта и, соответственно, те алгоритмы заполнения, которые в ней описаны.
Если же объект, который вводится на основании, нужно сразу записать в базу данных не показывая его форму пользователю, то тогда можно использовать метод объекта Заполнить().
Создать новый объект, и вызвать у него метод Заполнить(), в который передать значение, на основании которого должен быть создан этот объект.
В результате этих действий будет выполнен обработчик события ОбработкаЗаполнения, расположенный в модуле нового объекта.
Следует заметить, что событие ОбработкаЗаполнения есть не только у объектных данных (документов, справочников и т.п.), но и у регистра сведений, в модуле объекта РегистрСведенийНаборЗаписей. .
Подробнее о заполнении новых объектов данными можно посмотреть в вопросе Как при открытии формы определить, что создается новый элемент? .
Для этих целей существует два возможных сценария работы:
- Открыть форму нового документа и предоставить пользователю самому интерактивно записать данные объекта в базу данных.
- Создать новый документ программно, программно заполнить его данными и программно записать. Затем, если нужно, показать его пользователю.
В первом сценарии проще всего использовать метод глобального контекста ОткрытьФорму() . Это можно сделать на клиенте. При этом создается новый документ и открывается для редактирования основная форма этого документа.
Если нужно какое-то предварительное заполнение документа начальными данными, то это можно сделать либо с помощью свойств реквизитов документа ЗначениеЗаполнения , ЗаполнятьИзДанныхЗаполнения либо в обработчике события документа ОбработкаЗаполнения .
Во втором случае можно программно создать документ на сервере, заполнить данными (если это нужно) в обработчике события ОбработкаЗаполнения , записать, и передать ссылку на новый документ в метод глобального контекста ОткрытьЗначение() , который откроет форму этого документа. Например:
Обучение программированию на 1С
Ввод на основании
В 1С начинающие программисты зачастую создают механизмы, которые уже заложены в платформе 1С Предприятие. Примером этого может являться механизм ввода документа на основании другого документа (или объекта).
Механизм «Ввод на основании» предполагает:
- Создание на основании нового документа и открытие его формы
- Заполнение реквизитов документа-приёмника из документа-источника (или другого объекта системы)
- Другие программные операции с документом-приёмником.
Теперь, чтобы воспользоваться этим великолепным механизмом и не изобретать велосипед, нужно сделать следующее:
1. Открываем в конфигураторе документ-источник, переходим на вкладку «Ввод на основании» и добавляем необходимый документ-приёмник (или другой объект) в разделе «Является основанием для».
2. Затем в модуле документа-приёмника в процедуре «ОбработкаЗаполнения» программно заполняем те поля документа из документа-основания, которые хотим.
3. Обновляем конфигурацию, запускаем режим «1С Предприятия» и наслаждаемся результатом.
Если вам понравилась эта статья, поставите лайк. Все вопросы пишите в комментариях ниже. Удачного вам изучения всех тонкостей 1С!