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