Как вывести скрытую колонку «Автор» в списке цен номенклатуры в 1С?

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

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

Пользовательская видимость против обычной видимости: в чем разница?

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

  1. Обычная видимость (свойство «Видимость»): Управляет физическим наличием элемента в потоке интерфейса. Если снять галочку видимости в свойствах элемента или программно установить Элементы.ИмяЭлемента.Видимость = Ложь, элемент полностью исключается из разметки. Пользователь не сможет вернуть его на форму самостоятельно через команду «Еще -> Изменить форму...».
  2. Пользовательская видимость: Это тонкий инструмент настройки прав и интерфейса по умолчанию. Данное свойство определяет, будет ли колонка или поле отображаться на экране при первом открытии формы для определенных ролей или для всех пользователей системы. Если пользовательская видимость отключена, элемент скрыт по умолчанию, но его можно вручную вывести через меню «Изменить форму».

Чтобы исправить поведение колонки Автор на форме списка регистра цен номенклатуры, выполним следующие шаги в Конфигураторе:

  1. Откроем нужную форму списка регистра сведений (в нашем случае — форму, которая открывается из карточки номенклатуры).
  2. Найдем в дереве элементов формы нужную колонку Автор (или Список.Автор).
  3. Перейдем в палитру свойств этого элемента (сочетание клавиш Alt + Enter).
  4. Найдем строку «Пользовательская видимость» и нажмем по ссылке «Открыть».
  5. В открывшемся окне настроек проанализируем список ролей. Убедимся, что напротив нужных ролей (или в колонке «Видимость» для всех пользователей) установлены флажки.
  6. Сохраним изменения в конфигурации базы данных и проверим результат в режиме «1С:Предприятие». Колонка должна появиться на форме по умолчанию.

Альтернативная причина 1: Влияние функциональных опций (ФО)

В типовых конфигурациях (таких как 1С:УНФ, 1С:ERP или 1С:Комплексная автоматизация) элементы интерфейса часто привязываются к функциональным опциям. Если опция отключена в настройках программы, платформа автоматически скрывает все связанные с ней реквизиты и элементы форм.

Проанализируем этот сценарий. Если реквизит Автор связан с выключенной функциональной опцией (например, отключен функционал истории изменений или версионирования), колонка пропадет с формы программно. При этом в отладчике свойство Видимость самого элемента формы может возвращать значение Истина, но на уровне рендеринга формы платформа проигнорирует этот элемент.

Чтобы проверить эту гипотезу, найдем реквизит Автор в метаданных регистра в Конфигураторе, перейдем на вкладку «Функциональные опции» и проверим, в какие ФО он входит. При необходимости включим соответствующую опцию в пользовательском интерфейсе администрирования программы.

Альтернативная причина 2: Динамическое переопределение текста запроса списка

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

Посмотрим на пример того, как в коде может переопределяться запрос динамического списка:


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

В данном примере из запроса полностью исключено поле Автор. Даже если элемент формы связан с путем к данным Список.Автор, колонка не будет отображаться, либо данные в ней будут пустыми. Чтобы исправить это, нам необходимо скорректировать программный запрос и добавить в секцию ВЫБРАТЬ поле РегистрЦены.Автор КАК Автор.

Альтернативная причина 3: Ограничение доступа на уровне записей (RLS) и права ролей

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

  1. Права на реквизит регистра: В свойствах ролей пользователя для реквизита Автор регистра сведений «Цены номенклатуры» должно быть разрешено право «Просмотр».
  2. Доступ к типу данных: Поскольку поле Автор обычно имеет ссылочный тип (например, СправочникСсылка.Пользователи), у пользователя обязательно должны быть права на чтение этого справочника. Если прав на справочник «Пользователи» нет, платформа скроет колонку динамического списка во избежание показа пустых или «битых» ссылок типа «Объект не найден».

Альтернативная причина 4: Оптимизация работы и свойство «Использовать всегда»

При выводе данных в динамический список платформа 1С оптимизирует запросы к СУБД. Она считывает только те поля, которые в данный момент физически отрисованы на экране пользователя.

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

Альтернативная причина 5: Кэширование настроек формы

В редких случаях, даже после изменения параметров пользовательской видимости и сброса настроек формы кнопкой «Установить стандартные настройки», колонка не появляется. Это связано с зависанием кэша настроек интерфейса в системных таблицах базы данных (Хранилище настроек).

Для исправления этой проблемы выполним очистку кэша для конкретного пользователя через режим «1С:Предприятие»:

  1. Перейдем в раздел Администрирование -> Настройки пользователей и прав.
  2. Откроем пункт «Очистка настроек».
  3. Выберем пользователя, у которого наблюдается проблема, найдем в списке форму регистра цен номенклатуры и удалим сохраненные настройки для этой формы.
← На главную