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