Почему не отображается добавленный реквизит в табличной части документа 1С?

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

Часто разработчики сталкиваются с ситуацией: в типовой конфигурации, например, «1С:Бухгалтерия 3.0», в табличную часть документа добавляется новый реквизит, он выносится на форму, но в режиме «1С:Предприятие» колонка так и не появляется. При этом в настройках формы («Еще» -> «Изменить форму») реквизит виден, но неактивен или просто скрыт. Попытки найти в коде формы процедуру, управляющую видимостью, не дают результата.

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

Причина проблемы: механизм функциональных опций

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

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

Рассмотрим по шагам, как диагностировать и решить эту проблему.

Шаг 1: Первичная диагностика

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

  1. Реквизит объекта и реквизит формы. Убедитесь, что вы добавили не только реквизит в саму табличную часть объекта метаданных (например, Документ.ПоступлениеУслуг.ТабличнаяЧасть.Товары), но и соответствующий ему элемент (поле) на управляемую форму документа.
  2. Правильная форма. У многих документов в типовых конфигурациях есть несколько форм (форма списка, форма выбора, основная форма, форма для мобильного клиента и т.д.). Убедитесь, что вы вносите изменения именно в ту форму, которая открывается в вашем сценарии работы.
  3. Наличие в элементах формы. В режиме предприятия откройте документ и через меню «Еще» -> «Изменить форму» проверьте, есть ли ваш реквизит в списке элементов. Если он там есть, но неактивен (серый) или у него снят флажок видимости, это верный признак того, что его состоянием управляет какой-то механизм, скорее всего — функциональная опция.
  4. Права доступа. Убедитесь, что у роли пользователя, под которым вы работаете, есть права на чтение и просмотр нового реквизита.

Шаг 2: Поиск и привязка к функциональной опции

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

Разберем, как это сделать:

  1. Находим управляющий элемент. Откройте форму документа в конфигураторе. В дереве элементов формы найдите группу, в которую вы поместили свой новый реквизит (например, это может быть сама таблица Товары).
  2. Изучаем свойства группы. Выделите эту группу или таблицу и откройте палитру свойств (через контекстное меню или клавишей F4). Найдите свойство «Функциональные опции». В этом свойстве будет указано имя одной или нескольких опций, которые управляют видимостью данного элемента. Например, это может быть опция ИспользоватьОсновныеСредства.
  3. Открываем объект функциональной опции. Теперь, зная имя опции, найдите ее в дереве конфигурации в ветке Общие -> Функциональные опции.
  4. Добавляем реквизит в состав опции. Откройте найденную функциональную опцию и перейдите на вкладку «Состав». Перед вами будет дерево всех объектов конфигурации. Найдите в нем свой новый реквизит (например, Документ.ПоступлениеУслуг.ТабличнаяЧасть.Товары.МойРеквизит) и установите напротив него флажок.

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

Шаг 3: Программная работа с функциональными опциями

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

Для этого используется функция общего модуля ОбщегоНазначения.ПолучитьЗначениеФункциональнойОпции() или платформенная функция ПолучитьФункциональнуюОпцию(). Рекомендуется использовать обертку из общего модуля, так как она может содержать кэширование для повышения производительности.

Посмотрим на пример:

Предположим, нам нужно выполнить какой-то код только если включен учет по основным средствам.


// Пример проверки на сервере
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    Если ОбщегоНазначения.ПолучитьЗначениеФункциональнойОпции("ИспользоватьОсновныеСредства") Тогда
        // Выполняем действия, необходимые только при включенном учете ОС
        Сообщить("Учет по основным средствам включен!");
    КонецЕсли;

КонецПроцедуры

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

Таким образом, невидимость реквизита в типовой конфигурации — это не ошибка, а штатное поведение системы, основанной на БСП. Поняв механизм функциональных опций, вы сможете корректно встраивать свои доработки в логику программы, делая их гибкими и управляемыми через стандартные настройки.

← На главную