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