Почему не работает RLS при копировании роли Полные права в 1С и как правильно настроить доступ?

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

При настройке прав пользователей в программах 1С (таких как 1С:Управление торговлей, 1С:ERP, 1С:Комплексная автоматизация) часто возникает идея: взять роль ПолныеПрава, скопировать её в конфигураторе, отключить несколько ненужных прав и включить механизм RLS (Record Level Security — ограничение доступа на уровне записей) в пользовательском режиме. Однако после назначения такой роли пользователь продолжает видеть абсолютно все документы, склады и организации без каких-либо ограничений. Выясним причину такого поведения платформы и разберем, как правильно реализовать разграничение доступа.

Принцип дизъюнкции прав в платформе 1С:Предприятие

Для понимания проблемы проанализируем базовый механизм проверки прав доступа платформы 1С:Предприятие 8:

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

Почему RLS не работает даже при сборке профиля из типовых ролей

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

Разберем причины этой проблемы:

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

Способ 1. Корректная настройка прав в пользовательском режиме (рекомендуемый)

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

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

Способ 2. Диагностика избыточных прав через типовой отчет

Если после настройки профиля пользователь все еще видит лишние объекты, необходимо выяснить, какая именно роль дает безусловный доступ. Воспользуемся встроенными инструментами диагностики:

  1. Откроем карточку проблемного пользователя в разделе Настройки пользователей и прав.
  2. На панели навигации перейдем по ссылке Права доступа и сформируем отчет по правам.
  3. В настройках отчета выберем интересующий объект метаданных (например, справочник Склады).
  4. Проанализируем отчет: система покажет детальную таблицу со списком всех назначенных ролей, правами Чтение, Изменение и отметками наличия условий RLS.
  5. Найдем роль, у которой стоит флаг Чтение, но отсутствует отметка об ограничении доступа, и исключим ее из профиля пользователя.

Способ 3. Добавление условий RLS в новую роль в конфигураторе

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

  1. Откроем конфигуратор и перейдем в дерево метаданных: ветка Общие — Роли.
  2. Откроем созданную роль и перейдем на вкладку Шаблоны ограничений. Добавим типовые шаблоны БСП (например, скопировав их из существующей рабочей роли с RLS) — ПоЗначениям или ПоЗначениямРасширенный.
  3. В дереве объектов роли выберем требуемый объект метаданных (например, справочник Контрагенты или Склады).
  4. Выделим право Чтение. В нижней части окна в поле Ограничение доступа к данным добавим вызов шаблона ограничения:

#ПоЗначениям( "Справочник.Склады","Чтение","",
"Склады","Ссылка",
"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","" )
  1. Аналогичным образом настроим условия для прав Добавление, Изменение и Удаление.
  2. Сохраним изменения конфигурации и обновим информационную базу.
  3. Запустим конфигурацию в режиме предприятия под пользователем с полными правами, чтобы выполнились системные обработчики обновления метаданных и новая роль корректно зарегистрировалась в подсистеме управления доступом.

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

← На главную