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