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

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

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

Разберем природу динамического списка

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

Первым делом проверим свойство «Использовать всегда». В конфигураторе выберите ваш динамический список, перейдите в его настройки (вкладка «Настройка списка»), выберите нужное поле и установите флаг Использовать всегда. Это гарантирует, что поле будет включено в выборку БД, даже если оно не отображается визуально в данный момент.

Проверим функциональные опции и пользовательскую видимость

Ситуация, описанная в обсуждении, часто встречается в типовых или доработанных конфигурациях, таких как БГУ (Бухгалтерия государственного учреждения). В таких системах интерфейс сильно зависит от функциональных опций (ФО). Проанализируем ситуацию по шагам:

  1. Откройте свойства добавленного реквизита в конфигураторе.
  2. Перейдите на закладку «Дополнительно».
  3. Проверьте раздел «Функциональные опции». Если реквизит привязан к опции, которая выключена в константах предприятия, поле не появится на форме ни при каких условиях.
  4. Проверьте свойство «Пользовательская видимость» у элемента формы. Убедитесь, что для нужных ролей пользователей стоит галочка «Видимость».

Важный момент: если ваш реквизит — это поле другого объекта, подтянутое через соединение (JOIN), проверьте функциональные опции того, исходного объекта. Платформа 1С умеет транслировать ограничения ФО по цепочке связей.

Сброс настроек формы в пользовательском режиме

Платформа 1С кэширует настройки формы для каждого конкретного пользователя. Если вы ранее открывали эту форму и меняли расположение колонок, 1С запомнила «старый» состав полей. Посмотрим, как это исправить:

  1. Запустите программу в режиме 1С:Предприятие.
  2. Откройте нужную форму списка.
  3. Нажмите кнопку «Еще» — «Изменить форму».
  4. В открывшемся окне нажмите «Еще» — «Установить стандартные настройки».

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

Влияние расширений конфигурации

Если ваша разработка ведется в расширении (или основная конфигурация имеет расширения), это вносит свои коррективы. Выясним причину возможного конфликта:

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

Программное формирование колонок в процедуре ПриСозданииНаСервере

Рассмотрим ситуацию, когда в коде формы прописано программное управление видимостью. В типовых конфигурациях часто встречается код, который скрывает или добавляет элементы формы «на лету». Изучите модуль формы:


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

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

Свойство «Автозаполнение» и «Основная таблица»

Проанализируем еще два важных свойства динамического списка в конфигураторе:

  1. Автозаполнение: Если эта галочка снята, то добавление поля в запрос не приведет к его автоматическому появлению в списке доступных полей формы. Вам придется вручную перетащить поле из ветки «Путь к данным» списка в дерево элементов формы.
  2. Основная таблица: Убедитесь, что у списка корректно указана основная таблица (например, Документ.ВашДокумент). Если основная таблица не указана, могут возникнуть проблемы с отображением стандартных полей и корректной работой ссылочных типов.

Проверка прав доступа (RLS)

Иногда причина кроется в банальном отсутствии прав. Даже если вы работаете под полными правами, в сложных системах (БГУ, ERP) могут действовать ограничения на уровне записей (RLS). Если у пользователя нет прав на чтение конкретного реквизита (даже если есть права на весь документ), платформа просто скроет это поле из списка. Проверьте роль пользователя и убедитесь, что на новый реквизит назначены права Просмотр и Чтение.

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

← На главную