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