При разработке в среде 1С:Предприятие 8.3 программисты часто сталкиваются с ситуацией: в конфигураторе в динамический список (или запрос формы списка) добавлены новые поля, они видны в схеме компоновки данных, их можно вызвать программно, но в режиме «Предприятие» они напрочь отсутствуют. Даже через команду «Изменить форму» эти поля не удается найти. Рассмотрим подробнее, почему так происходит и какие шаги необходимо предпринять для решения этой задачи.
Прежде всего, выясним, с каким объектом мы работаем. Если форма списка создана на основе произвольного запроса, то это ДинамическийСписок. Особенность динамического списка в том, что платформа оптимизирует выборку данных. Если поле добавлено в запрос, но не выведено на форму или не используется в оформлении, платформа может просто «выкинуть» его из результирующего SQL-запроса для экономии ресурсов. Проанализируем основные настройки, которые могут на это влиять.
Первым делом проверим свойство «Использовать всегда». В конфигураторе выберите ваш динамический список, перейдите в его настройки (вкладка «Настройка списка»), выберите нужное поле и установите флаг Использовать всегда. Это гарантирует, что поле будет включено в выборку БД, даже если оно не отображается визуально в данный момент.
Ситуация, описанная в обсуждении, часто встречается в типовых или доработанных конфигурациях, таких как БГУ (Бухгалтерия государственного учреждения). В таких системах интерфейс сильно зависит от функциональных опций (ФО). Проанализируем ситуацию по шагам:
Важный момент: если ваш реквизит — это поле другого объекта, подтянутое через соединение (JOIN), проверьте функциональные опции того, исходного объекта. Платформа 1С умеет транслировать ограничения ФО по цепочке связей.
Платформа 1С кэширует настройки формы для каждого конкретного пользователя. Если вы ранее открывали эту форму и меняли расположение колонок, 1С запомнила «старый» состав полей. Посмотрим, как это исправить:
Если это не помогло, попробуйте более радикальный метод — очистку кэша метаданных или удаление настроек формы через Администрирование — Настройки пользователей и прав — Настройки внешнего вида. Выберите нужного пользователя и удалите настройки для конкретной формы.
Если ваша разработка ведется в расширении (или основная конфигурация имеет расширения), это вносит свои коррективы. Выясним причину возможного конфликта:
Если форма списка была заимствована в расширение, то любые изменения в основной конфигурации (добавление реквизита в объект или в запрос списка) не подтянутся в форму расширения автоматически. Вам нужно вручную обновить форму в расширении, добавив туда те же поля, или убедиться, что запрос динамического списка в расширении идентичен запросу в основной базе.
Рассмотрим ситуацию, когда в коде формы прописано программное управление видимостью. В типовых конфигурациях часто встречается код, который скрывает или добавляет элементы формы «на лету». Изучите модуль формы:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Проверьте, нет ли здесь принудительной установки видимости
Элементы.ИсполнительБУ.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьИсполнителей");
// Или программного изменения текста запроса списка
ТекстЗапроса = Список.ТекстЗапроса;
// Если здесь происходит переопределение текста, ваши изменения из конфигуратора затрутся
КонецПроцедуры
Если текст запроса формируется динамически, убедитесь, что ваши новые поля добавлены в итоговую строку запроса.
Проанализируем еще два важных свойства динамического списка в конфигураторе:
Документ.ВашДокумент). Если основная таблица не указана, могут возникнуть проблемы с отображением стандартных полей и корректной работой ссылочных типов.Иногда причина кроется в банальном отсутствии прав. Даже если вы работаете под полными правами, в сложных системах (БГУ, ERP) могут действовать ограничения на уровне записей (RLS). Если у пользователя нет прав на чтение конкретного реквизита (даже если есть права на весь документ), платформа просто скроет это поле из списка. Проверьте роль пользователя и убедитесь, что на новый реквизит назначены права Просмотр и Чтение.
Подводя итог, если реквизит не виден: сначала сбрасываем настройки формы в «Предприятии», затем проверяем функциональные опции и свойство «Использовать всегда», и в завершение анализируем программный код в процедуре ПриСозданииНаСервере. В большинстве случаев проблема решается на одном из этих этапов.