Как ограничить доступ к справочнику СотрудникиОрганизаций по подразделению через RLS в 1С:Бухгалтерии?

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

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

Рассмотрим, почему возникает эта проблема, как работает принцип объединения прав в платформе 1С:Предприятие и как правильно настроить ограничения RLS по подразделениям, не нарушая штатную работу конфигурации.

Причина возникновения ошибок доступа при изменении ролей

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

  1. Если у пользователя есть хотя бы одна роль, дающая полное право на чтение таблицы без ограничений (например, типовая роль Пользователь), платформа полностью игнорирует RLS-условия из других ролей.
  2. Если снять право чтения с базовой роли Пользователь и перенести его в новую роль, неограниченные пользователи могут потерять доступ к объекту. Это происходит из-за того, что справочник СотрудникиОрганизаций используется в динамических списках, запросах и механизмах БСП вместе со смежными регистрами и справочниками, на которые права в новой роли могут быть прописаны не полностью.

Правильный подход заключается не в удалении чтения из базовой роли, а в корректной настройке шаблонов RLS во всех ролях, задействованных в профилях групп доступа.

Настройка RLS по подразделению с помощью шаблонов БСП

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

Шаг 1. Использование шаблона ограничений RLS

Для ограничения чтения элементов справочника применяется стандартный шаблон библиотеки стандартных подсистем (БСП) #ПоЗначениям. В роли, задающей ограничение, для права Чтение объекта Справочник.СотрудникиОрганизаций прописывается условие:


#ПоЗначениям("Справочник.СотрудникиОрганизаций", "Чтение", "", 
"Подразделения", "ТекущееПодразделениеОрганизации", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "", 
"", "", "", "", "", "", "", "", "", "", "", "", "", "")

При использовании расширенного шаблона #ПоЗначениямРасширенный (например, для связывания через кадровые регистры) конструкция принимает следующий вид:


#ПоЗначениямРасширенный("Справочник.Сотрудники", "Чтение", "",
"ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ОрганизацииВКоторыхРаботалиСотрудники КАК Т2 ПО Т2.Сотрудник = Т.Ссылка", "",
"ПодразделенияОрганизаций", "Т.ТекущееПодразделение", "", "", "", "", "", "", "", "", "", "", "", "")

Шаг 2. Заполнение RLS во всех связанных ролях

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

Шаг 3. Настройка групп доступа в режиме «1С:Предприятие»

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

  1. Создаем пользовательский профиль групп доступа на основании типового.
  2. Для пользователей с неограниченным доступом в настройках значений доступа группы указываем вид доступа Подразделения — Разрешены все.
  3. Для пользователей с ограниченным доступом указываем вид доступа Подразделения — Запрещены все и добавляем в список исключений только доступные подразделения.

Рекомендации по отладке и обновлению данных

Если после настройки прав и применения RLS пользователи получают сообщение «Недостаточно прав доступа», выполним следующие действия:

  1. Проверим наличие права Просмотр на справочник СотрудникиОрганизаций в добавляемой роли, так как право Чтение отвечает только за получение данных на уровне запросов, а Просмотр — за интерактивное отображение в формах.
  2. В случае добавления новых ролей в конфигураторе обновим вспомогательные данные БСП, запустив процедуру обновления идентификаторов объектов метаданных (через подсистему «Управление доступом»).
  3. Убедимся, что у пользователя не оставлены старые параллельные группы доступа, дающие полный доступ к справочнику.
← На главную