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

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

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

Разберем подробнее, почему так происходит, и проанализируем основные способы решения этой задачи.

Выясним причину проблемы

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

  1. Включен флаг «Произвольный запрос»: Если для списка задан собственный текст запроса, платформа 1С не добавляет новые реквизиты объекта автоматический в секцию ВЫБРАТЬ. Доступными остаются только те поля, которые явно перечислены в запросе.
  2. Не заполнено свойство «Основная таблица»: Если у динамического списка не указана основная таблица (например, Документ.Заказ), платформа не производит автоматический импорт состава реквизитов объекта метаданных.
  3. Разные источники данных в формах: Одна форма списка может быть построена напрямую на таблице документа, а другая — использовать журнал документов или произвольное объединение таблиц, где нового реквизита изначально нет.

Способ 1. Добавление реквизита в текст произвольного запроса

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

  1. Откроем управляемую форму в конфигураторе и перейдем на вкладку Реквизиты.
  2. Выделим основной реквизит формы с типом ДинамическийСписок (обычно он называется Список).
  3. В панели свойств найдем пункт Настройка списка и откроем строку Запрос (или нажмите кнопку открытия конструктора запроса).
  4. В тексте запроса найдем секцию ВЫБРАТЬ и добавим созданный реквизит.

Рассмотрим пример корректировки запроса в динамическом списке:


ВЫБРАТЬ
	ЗаказПокупателя.Ссылка КАК Ссылка,
	ЗаказПокупателя.Дата КАК Дата,
	ЗаказПокупателя.Номер КАК Номер,
	ЗаказПокупателя.Проведен КАК Проведен,
	ЗаказПокупателя.НовыйРеквизит КАК НовыйРеквизит
ИЗ
	Документ.ЗаказПокупателя КАК ЗаказПокупателя

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

Способ 2. Проверка свойства «Основная таблица»

Если произвольный запрос не содержит сложной логики, проверим настройку основной таблицы динамического списка:

  1. В дереве реквизитов формы выберем элемент Список.
  2. В палитре свойств найдем поле Основная таблица.
  3. Укажем значение Документ.НазваниеВашегоДокумента.

После этого платформа автоматически обновит состав полей dynamic list и предоставит доступ ко всем реквизитам объекта.

Способ 3. Вывод реквизита через поле «Ссылка» (Без редактирования запроса)

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

  1. Добавим новую колонку в таблицу формы.
  2. В свойстве элемента ПутьКДанным укажем путь через точку от ссылки на документ: Список.Ссылка.НовыйРеквизит.

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

Способ 4. Принудительное обновление структуры полей в Конфигураторе

Иногда платформа 1С кэширует структуру полей управляемой формы. Чтобы принудительно обновить состав полей:

  1. Зайдем в свойства реквизита Список.
  2. Откроем Конструктор запроса.
  3. Нажмем кнопку ОК для повторной сохранения и переформирования структуры полей.
  4. Убедимся, что в поле ПутьКДанным созданной колонки теперь можно выбрать необходимый реквизит.
← На главную