Почему не отображается новая колонка динамического списка в 1С:Предприятие и как это исправить?

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

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

Причина 1. Программное переопределение текста запроса динамического списка

Проанализируем архитектуру типовых решений (например, «1С:Управление нашей фирмой», «1С:ERP», «1С:Комплексная автоматизация»). В формах списков текст запроса, заданный в свойствах динамического списка в конфигураторе, часто играет лишь роль шаблона либо вовсе полностью перезаписывается в момент открытия формы.

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

Разберем по шагам, как исправить эту ситуацию:

  1. Откроем модуль формы и найдем процедуру ПриСозданииНаСервере.
  2. Найдем место, где переопределяется свойство Список.ТекстЗапроса, либо точки вызова подсистем БСП.
  3. Дополним текст запроса программно после выполнения типовых процедур инициализации:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Вызов типовой логики инициализации формы
    // ...
    
    // Модифицируем динамически переопределенный запрос списка
    Список.ТекстЗапроса = СтрЗаменить(
        Список.ТекстЗапроса,
        "ВЫБРАТЬ",
        "ВЫБРАТЬ
        |	Номенклатура.Артикул КАК Артикул,"
    );
КонецПроцедуры

Если используется расширение конфигурации, переопределение запроса динамического списка выполняем в обработчике &После("ПриСозданииНаСервере") или через изменение схемы компоновки данных списка.

Причина 2. Сохраненные пользовательские настройки формы

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

Выполним следующие действия для сброса сохраненных настроек:

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

Причина 3. Ограничения на закладке «Настройки» схемы компоновки данных

Динамический список использует схему компоновки данных (СКД). Если в свойствах динамического списка открыта схема и на закладке Настройки в разделе Выбранные поля зафиксирован определенный состав полей, простого добавления поля в текст запроса недостаточно.

Рассмотрим порядок действий для проверки СКД:

  1. Откроем свойства динамического списка в окне реквизитов формы.
  2. Перейдем по ссылке в свойство Настройка списка.
  3. Перейдем на закладку Выбранные поля. Если флаг автозаполнения снят и список заполнен вручную, добавим наше новое поле в список выбранных полей.

Причина 4. Свойства видимости, функциональные опции и права доступа (RLS)

Если поле присутствует в запросе и в настройках, но колонка упорно не отображается, проверим права и видимость:

  1. Ограничение прав (RLS): Если новое поле выбирает данные из реквизита или связанной таблицы, на которую у роли текущего пользователя нет права «Чтение», платформа автоматически скрывает элемент без вывода сообщений об ошибках. Проверим права текущей роли на выбранные объекты метаданных.
  2. Пользовательская видимость: В свойствах добавленного элемента формы нажмем на свойство ПользовательскаяВидимость и убедимся, что для вашей роли установлен флаг видимости.
  3. Функциональные опции: Проверим, не привязана ли к реквизиту или элементу формы функциональная опция, которая в данный момент выключена в программе.
  4. Программное отключение видимости: Выполним глобальный поиск по имени добавленного элемента в модуле формы. В типовых конфигурациях видимость колонок может отключаться строкой Элементы.ИмяКолонки.Видимость = Ложь; в процедурах настройки интерфейса.

Особенность: свойство «Использовать всегда»

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

← На главную