У каждого программиста 1С рано или поздно возникает необходимость в программном добавлении реквизитов на форму справочника, документа и т.д. Потребность возникает в связи с желанием комфортно обновлять доработанную конфигурацию и не вспоминать после установки очередного релиза где и как были добавлены элементы на управляемую форму.
Когда речь идет о добавлении 1-го, 2-х, 5-ти реквизитов ссылочного/примитивного типа - никаких проблем! Загуглили, скопировали программный код, установили свои наименования и все ок, но если в качестве добавляемого реквизита выступает Таблица значений, либо реквизит объекта вида Табличная часть, то возникают некоторые сложности: Во-первых, необходимо программно добавить Элемент формы с типом "ТаблицаФормы", во-вторых в цикле обойти колонки Таблицы Значений, перебрать все возможные типы колонок и добавить элементы с типом "ПолеФормы".
В этой заметке я решил вывести почти универсальную процедуру по добавлению реквизитов на форму в общий модуль расширения. Итак, разберем устройство и вариант применение процедуры.
Всего у метода шесть параметров. Первые три указываются в обязательном порядке. "Форма" - форма, на которую добавляем элементы. "Имя" - наименование нашего реквизита и, соответственно, элемента формы. "ГруппаФормы" - элемент формы типа "Группа - обычная группа"/"Группа - обычная группа без отображения", никакие страницы не прокатят:). Затем, если реквизит уже существует на форме, то передаем его ("РеквизитФормы") и его полный путь в виде строки "ПолныйПуть". Если же реквизит отсутствует на форме и его необходимо динамически создать, передаем переменную, значение которой хотим выводить на форме "ЗначениеРеквизита" - Ссылочный/примитивный тип, либо Таблица значений.
В качестве примера, привожу скриншот с вызовом данной процедуры на форме справочника "Сотрудники", конфигурации ЗКГУ 3.1:
Первый вызов процедур соответствует программному созданию реквизита на форме, с именем "ПриемНаРаботу" и выводом элемента типа "ТаблицаФормы" на форму. В качестве имени я указал "ПриемНаРаботу", в качестве группы выбрал "Элементы.ГруппаДатаРожденияПолИННСНИЛС" и в качестве желаемого реквизита передал ТЗ - Выгрузка результата запроса.
Второй вызов соответствует программному добавлению элементов на форме для табличной части "Форм_ТабличнаяЧасть1". Реквизит я назвал "ТестоваяТаблица", группу передал аналогичную - "Элементы.ГруппаДатаРожденияПолИННСНИЛС", наименование реквизита - "Сотрудник.Форм_ТабличнаяЧасть1", полный путь к реквизиту "Сотрудник.Форм_ТабличнаяЧасть1" (тип: строка).
После вызова указанных процедур на форме сгенерировались две таблицы следующего вида:
Таким образом была добавлена возможность программного формирования таблиц на форме.
К данной статье прикладываю два расширения: 1-е с указанным выше примером для конфигурации ЗКГУ, 2-е - содержит только общий модуль и саму процедуру по формированию элементов и реквизитов на форме.
Разработка производилась и тестировалась на платформе "1С:Предприятие 8.3 (8.3.18.1289)", конфигурации "Зарплата и кадры государственного учреждения, редакция 3.1 (3.1.20.36)"