Почему поле регистра сведений не отображается в форме списка и как это исправить

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

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

Анализ основной причины: Использование произвольного запроса

Проанализируем наиболее частую причину. В современных конфигурациях формы списков редко строятся простым выводом таблицы. Чаще всего используется ДинамическийСписок. Если в свойствах этого списка установлен флаг Произвольный запрос, то система перестает автоматически обновлять состав полей при изменении метаданных объекта.

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

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

Пример типичного запроса, который требует корректировки:


ВЫБРАТЬ
    РегистрСведенийИмя.Период,
    РегистрСведенийИмя.Номенклатура,
    // Наше новое поле нужно добавить ниже:
    РегистрСведенийИмя.Количество 
ИЗ
    РегистрСведений.ИмяРегистра КАК РегистрСведенийИмя

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

Проверка состава элементов формы и пользовательских настроек

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

Разберем, как принудительно добавить поле, если оно есть в данных реквизита Список, но не отображается на экране:

  1. В редакторе формы перейдем на вкладку Элементы.
  2. Найдем таблицу, которая отображает наш список.
  3. Нажмем правую кнопку мыши на таблице и выберем Добавить — Поле.
  4. В открывшемся окне выберем Список.Количество.

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

Влияние функциональных опций на отображение полей

Проанализируем более глубокую техническую причину — механизм функциональных опций. В крупных конфигурациях (ERP, УТ 11, КА) видимость многих полей управляется константами. Если поле Количество связано с функциональной опцией, которая в данный момент выключена в пользовательском режиме (например, «Вести учет в нескольких единицах измерения»), то платформа полностью исключит это поле из интерфейса.

Выясним, как проверить эту связь:

  1. Найдем наше поле в дереве метаданных регистра.
  2. Перейдем на вкладку Функциональные опции (или найдем использование этого поля в самих объектах ФункциональнаяОпция).
  3. Если поле включено в какую-либо опцию, необходимо проверить значение соответствующей константы в режиме «1С:Предприятие» или временно отключить связь для проверки.

Роли и права доступа (RLS)

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

Проверим роли пользователя:

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

Программное управление видимостью

Часто разработчики скрывают поля программно в зависимости от контекста. Проанализируем программный код в модуле формы. Нам интересны процедуры ПриСозданииНаСервере и ПриОткрытии. Ищите строки кода, которые обращаются к коллекции Элементы.

Рассмотрим пример кода, который может скрывать поле:


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

КонецПроцедуры

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

Настройка «Использовать всегда» в динамическом списке

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

Разберем, как гарантировать наличие поля в выборке:

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

Это заставит систему всегда включать поле Количество в SELECT запрос, независимо от настроек видимости элементов формы.

Проблемы кеширования и расширений

Если все настройки верны, но поле так и не появилось, рассмотрим вероятность технического сбоя. Кеш метаданных 1С иногда может «зависать», не отображая актуальную структуру таблиц. В этом случае поможет очистка кеша или запуск с параметром /ClearCache.

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

Заключение

Подводя итог, можно сказать, что «исчезновение» поля — это почти всегда следствие работы динамического списка с произвольным запросом или ограничения прав/опций. Пройдя по шагам от простого (проверка «Изменить форму») к сложному (анализ RLS и функциональных опций), мы обязательно найдем причину и вернем необходимые данные на экран пользователя.

← На главную