Как вывести дополнительный реквизит в табличную часть формы?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке на платформе 1С часто возникает задача отобразить дополнительные реквизиты, настроенные через механизм БСП (Библиотека стандартных подсистем), непосредственно в строках табличной части документа. Многие начинающие разработчики пытаются найти эти поля в стандартном меню Изменить форму, однако сталкиваются с тем, что нужные реквизиты там отсутствуют. Давайте разберемся, почему так происходит и как реализовать это корректно, не внося изменений в конфигурацию напрямую.

Понимание архитектуры дополнительных реквизитов

Первое, что необходимо уяснить: дополнительные реквизиты не являются физическими полями (колонкам) в таблице базы данных вашего документа. Они хранятся в специальных регистрах или табличных частях ДополнительныеРеквизиты. Платформа 1С в режиме конфигуратора «видит» только объекты метаданных. Так как дополнительные реквизиты создаются пользователем в режиме 1С:Предприятие, они не являются метаданными в строгом смысле этого слова.

Именно поэтому стандартная кнопка Добавить поля в редакторе форм остается неактивной или не показывает список свойств — система просто не имеет доступа к ним как к реквизитам объекта в структуре формы.

Шаг 1: Создание контейнера в расширении

Чтобы вывести дополнительный реквизит на форму, нам потребуется создать «посредника». Мы будем использовать Расширение конфигурации, чтобы избежать снятия конфигурации с поддержки.

  1. Откройте вашу конфигурацию в режиме Расширения.
  2. Найдите нужный документ и перейдите к его табличной части.
  3. Добавьте новый реквизит табличной части (например, с типом Строка, Число или СправочникСсылка, соответствующий типу вашего дополнительного реквизита).
  4. Выведите этот созданный реквизит на форму в нужную колонку табличной части.

Шаг 2: Программное заполнение данных

После того как колонка появилась на форме, она пуста. Нам необходимо «связать» её с данными из регистра ДополнительныеСведения. Для этого воспользуемся обработчиками событий, которые мы добавим через расширение:

В модуле формы (в расширении) используем обработчик ПриЧтенииНаСервере или ПриСозданииНаСервере. Мы должны считать значение дополнительного реквизита и передать его в наш «контейнер»:


// Пример логики получения данных
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
    // Получаем свойства через механизмы БСП
    Свойства = УправлениеСвойствами.ПолучитьСвойства(ТекущийОбъект.Ссылка);
    
    Для Каждого СтрокаТЧ Из Объект.ВашаТабличнаяЧасть Цикл
        // Находим значение нужного свойства для конкретной строки
        ЗначениеСвойства = ПолучитьЗначениеСвойстваИзРегистра(СтрокаТЧ.СсылкаНаСтроку);
        СтрокаТЧ.ВашНовыйРеквизит = ЗначениеСвойства;
    КонецЦикла;
КонецПроцедуры

Шаг 3: Реализация записи данных

Аналогично, при сохранении документа, нам нужно перенести данные из нашего «контейнера» обратно в механизм дополнительных реквизитов БСП. Это делается в событии ПередЗаписьюНаСервере:


&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    Для Каждого СтрокаТЧ Из ТекущийОбъект.ВашаТабличнаяЧасть Цикл
        // Сохраняем значение из реквизита формы обратно в свойства БСП
        ЗаписатьЗначениеСвойства(СтрокаТЧ.СсылкаНаСтроку, СтрокаТЧ.ВашНовыйРеквизит);
    КонецЦикла;
КонецПроцедуры

Почему кнопка «Добавить поля» не активна?

Если в процессе настройки формы вы видите, что кнопка Добавить поля неактивна, это может быть вызвано несколькими причинами:

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

Заключение

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

← На главную