В моей работе частенько возникали задачи по заполнению табличных частей справочников/документов посредством создания дополнительных обработок с видом «Заполнение объекта». По факту большая часть таких обработок выполняла какой-то запрос и на основании результатов запроса заполняла интересуемую табличную часть. Соответственно для нового объекта заполнения приходилось делать другую обработку со всеми необходимыми изменениями. А хотелось не тратить время на все вышеописанное, а иметь одну универсальную обработку, которая позволяла делать две вещи:
-
«На лету» формировать запросы с дополнительными настройками (настройки заполнения) для заполнения тех или иных табличных частей интересуемых справочников/документов, с сохранением куда-то указанных настроек;
-
Не создавать кучу различных дополнительных обработок, а использовать одну универсальную, которая в зависимости от объекта и табличной части подтягивала соответствующую настройку заполнения и заполняла бы табличную(ые) часть(и).
Настройка заполнения табличной части
На первом шаге следует сформировать настройки заполнения для табличных частей необходимых справочников/документов. Для этого открываем обработку как внешнюю. Выбираем справочник/документ (поле «Имя объекта») и его табличную часть (поле «Имя табл. части»), которая будет использоваться для заполнения. Для примера будем заполнять табличную часть «Комплектующие» документа «Сборка товаров» (если в документе надо заполнить несколько табличных частей, тогда делаем настройки заполнения для каждой табличной части).

Переходим на вкладку «Настройки заполнения» -> «Текст запроса». Здесь набрасываем свой запрос для заполнения табличной части «Комплектующие». Это можно сделать в ручную, набрав соответствующий текст в поле "Текст запроса", либо воспользоваться конструктором запроса, нажав соответствующую кнопку «Конструктор запроса».

После формирования текста запроса, программа автоматически заполняет таблицу «Параметры запроса» параметрами, которые присутствуют в запросе. Используются три типа параметров:
-
«ОбъектСсылка» - если указан данный параметр, то при обработке заполнения табличной части, он устанавливается ссылкой текущего справочника/документа, табличную часть которого мы заполняем.
-
«Пользовательские» - установлена галка «Пользовательский» напротив соответствующего параметра. Пользовательский параметр указывает обработке заполнения на то, что в процессе заполнения этот параметр должен быть выбран пользователем вручную. При обработке заполнения открывается вспомогательная форма, для заполнения пользователем данных параметров.
-
«Статические» - параметры без установленной галки «Пользовательский». Данные параметры содержат значение, которое устанавливается в настройке заполнения и остается неизменным при любом заполнении указанной табличной части выбранного справочника/документа.

В тексте и параметрах запроса мы определили, что табличная часть «Комплектующие» будет заполняться номенклатурой и характеристикой, которые указывает пользователь (т.к. для этих параметров установлена галка «Пользовательский»). А колонки «Количество» и «КоличествоУпаковок» будем рассчитываться как произведение соответствующих количеств комплекта (берем из шапки текущего документа «Сборка товаров», т.к. используется параметр «ОбъектСсылка») на множитель (статический параметр = 3).

Обратите внимание на таблицу «Результат», которая расположена на вкладке «Настройки заполнения» -> «Текст запроса». Она содержит все поля выбранной в шапке обработки табличной части (в нашем примере табл. часть «Комплектующие» документа "Сборка товаров"). Наименование колонки таблицы - это синоним реквизита табличной части, указанный в конфигураторе, а текст указанный в скобках - имя реквизита. С помощью вышеописанной таблицы мы с легкостью может увидеть, как отработает наша настройка заполнения табличной части. Для этого следует нажать на кнопку «Заполнить по запросу», после чего таблица «Результат» заполниться результатами нашего сформированного запроса.

На вкладке «Дополнительно» можно определить дополнительные свойства и указать следующие настройки при записи выбранного справочника/документа:
-
«Привилегированный режим при записи» - производить запись выбранного справочника/документа в привилегированном режиме;
-
«Режим загрузки (без проверок)» - при записи выбранного справочника/документа использовать режим загрузки;
-
«Очищать табл. часть перед заполнением» - перед заполнением табличной части выбранного справочника/документа её очищать.
Сохранение настройки заполнения табличной части
Далее следует сохранить сформированную на предыдущем шаге настройку заполнения табличной части «Комплектующие» документа «Сборка товаров». Для этого переходим на вкладку «Сохранение настройки заполнения». Процесс сохранения настройки аналогичен сохранению варианта отчета СКД (для хранения настроек используется объект конфигурации – «ХранилищеОбщихНастроек»). Если данной настройкой заполнения будет пользоваться только текущий пользователь, то в поле «Сохранить» следует установить переключатель на пункте «Только автору». В ином случае выбираем пункт «Указанным пользователям» и в списке пользователей устанавливаем флажки напротив имен пользователей, для которых необходимо сохранить данную настройку заполнения. После чего осталось только щелкнуть на кнопку «Сохранить настройку заполнения». Для удаления настройки у всех пользователей используется соответствующая кнопка «Удалить настройку заполнения у всех пользователей».

Подключение универсальной дополнительной обработки заполнения табличной части
Описание процесса подключения дополнительной обработки с генерацией функции «СведенияОВнешнейОбработке» можно посмотреть в моей публикации Заполнение Корректировки регистров на основании движений любого документа раздел «Подключение дополнительной обработки».
Заполнение табличной части
После подключения универсальной дополнительной обработки заполнения табличной части в формах документа, списка документов «Сборка товаров» появиться соответствующая кнопка «Заполнить табл. части (LKS32)».

При нажатии на вышеописанную кнопку, если для текущего пользователя была сохранена настройка заполнения табл. частей данного документа, запуститься процесс заполнения, в ином случае выведется сообщение об ошибке.

Так как в сохраненной настройке заполнения были указаны пользовательские параметры, то пользователю предоставится возможность их заполнить.

После чего следует щелкнуть на кнопку «Заполнить табл. части» и табличная часть «Комплектующие» текущего документа «Сборка товаров» заполниться согласно сохраненной настройке и указанным пользователем параметрам. В случае, когда пользовательских параметров нет, обработка заполнения отрабатывает сразу, без дополнительных форм.

Для нового объекта заполнения, Вам придется только сформировать/сохранить новую настройку заполнения, указать в дополнительной обработке размещение для нового объекта и ВСЁ, ни каких дополнительных действий делать НЕ НАДО.
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.22.149
- Управление торговлей, редакция 11, релизы 11.5.26.96
- Бухгалтерия предприятия КОРП, редакция 3.0, релизы 3.0.202.14
- Зарплата и управление персоналом КОРП, редакция 3.1, релизы 3.1.30.178
Вступайте в нашу телеграмм-группу Инфостарт