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