1С расширение ввод на основании

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

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

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

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

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

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

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

Добрый день. Постановка задачи – создать возможность ввести на основании счета покупателю – счета поставщику. Было принято решение это делать через расширение.

В расширении была создана такая внешняя команда:

С таким тексом модуля команды:

В модуле документа СчетаНаОплатуПоставщика была добавлена процедура:

Далее в процедуре "ЗаполнитьПоСчетуПокупателю" были прописаны алгоритмы заполнения документа.

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

Т.к есть ввод на основании, то не плохо бы сделать и вывод документа в структуру подчиненности, подумал я и сделал)

Читайте также:  Табличная часть документа в таблицу значений

В расширение была заимствована общая форма "СтруктураПодчиненности".

В ней прописана такая процедура:

Как видно из запроса, в качестве места где хранится документ основание, я использовал новый реквизит "ЕВ_ДокументОснование", причем он был добавлен непосредственно в конфигурацию, это было согласованно с закачиком. Данный вариант был выбран как наиболее надежный.

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

Ну и если предусмотреть дальнейшее развитие, т.е добавление нескольких документов, то стоит немного пересмотреть запрос и анализировать переменную "ЗначениеКритерияОтбора"

Нехитрое дело – добавить в типовую конфигурацию, например "1С ERP Управление предприятием 2", новый документ (назовём его "Запрос цен") и настроить его так, чтобы он создавался на основании типового документа, скажем "Заказ материалов в производство".

Однако, подводные камни всё-таки обнаруживаются. На форме документа "Заказ материалов в производство" появилось две кнопки "Создать на основании". Одна типовая, на рисунке она слева, а другая образовалась после добавления нового документа. При нажатии этой кнопки появляется список из единственного, вновь добавленного документа. Если же нажать штатную кнопку, то открывается список из нескольких типовых документов, среди которых, увы, нет нашего, добавленного. Возникает логичное желание перенести команду создания нового документа из правой кнопки в левую.

Для того, чтобы перенести команду в список штатной кнопки сделаем следующее:

В модуле менеджера документа "Заказ материалов в производство" есть процедура ДобавитьКомандыСозданияНаОсновании . Добавим в неё вызов функции, которую позже напишем в модуле менеджера документа "Запрос цен".

Добавляем функцию в модуль менеджера документа "Запрос цен":

В этой функции мы указали обработчик, расположенный в общем модуле дкВводНаОснованииКлиент . В типовой конфигурации подобные обработчики находятся в общем модуле ВводНаОснованииКлиент , но чтобы не изменять штатный модуль, был создан другой, с префиксом.

Читайте также:  Статические маршруты zyxel keenetic

В общем модуле дкВводНаОснованииКлиент создаём функцию обработчика, которая откроет нам форму создаваемого документа:

Таким образом мы добавили наш документ в список штатной кнопки "Создать на основании". Осталось убрать лишнюю кнопку на форме документа "Заказ материалов в производства". Делается это в форме документа "Заказ материалов в производство" в левом верхнем фрейме, на вкладке "Командный интерфейс". Снимаем флаги "Видимость" и "Автовидимость" для документа "Запрос цен".

Оцените статью
Добавить комментарий

Adblock detector