Почему не работает RLS по подразделениям в 1С:УПП 1.3 и как это исправить?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

При настройке доступа на уровне записей (RLS) в конфигурации «1С:Управление производственным предприятием 1.3» часто возникает ситуация: галочки в настройках прав доступа расставлены, пользователь добавлен в соответствующую группу доступа, однако в списках документов (например, в Приходных кассовых ордерах) всё равно отображаются записи чужих или пустых подразделений.

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

Главный принцип работы RLS: сложение прав

Основное правило системы безопасности 1С заключается в том, что права пользователя суммируются по логическому «ИЛИ». Всё, что разрешено пользователю хотя бы в одной из назначенных ему ролей, считается разрешенным в целом.

Проанализируем механику работы прав:

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

Шаг 1. Проверка и настройка ролей в Конфигураторе

Для того чтобы ограничения по подразделениям заработали, необходимо убедиться, что у пользователя нет ни одной роли с неограниченным доступом к целевому документу.

Выполним следующие действия в Конфигураторе:

  1. Откроем ветку Роли в дереве метаданных.
  2. Найдем пользовательскую роль (например, МойНаборПрав) и откроем ее для редактирования.
  3. В списке объектов найдем Документ.ПриходныйКассовыйОрдер.
  4. Перейдем к праву Чтение (а также Изменение и Удаление, если требуется ограничить запись).
  5. Проверим нижнюю правую панель Ограничение доступа к данным.
  6. Если текстовое поле ограничения пустое, укажем в нем вызов стандартного шаблона ограничения по подразделению.

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

#Подразделение("Подразделение", "")

Если для объекта используется проверка нескольких разрезов прав, шаблон прописывается с учетом всех необходимых полей. Главное правило — в роли не должно оставаться прав на чтение без RLS.

Шаг 2. Технические нюансы и подводные камни в УПП 1.3

Выясним дополнительные причины, по которым RLS может работать не так, как ожидается, даже после настройки ролей.

1. Документы с пустым подразделением

В типовых шаблонах RLS конфигурации УПП 1.3 прописано условие, согласно которому документы с невыбранным (пустым) подразделением считаются доступными для всех пользователей. Это предотвращает случайное скрытие общесистемных документов.

Если требуется скрывать документы без подразделения, необходимо отредактировать текст шаблона RLS в роли, исключив проверку на ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка).

2. Разделение управленческого и регламентированного учета

В УПП 1.3 существуют два разных справочника:

В документе ПКО могут быть заполнены оба реквизита или только один из них. Убедимся, что шаблон RLS обращается именно к тому реквизиту, по которому настраивается ограничение доступа.

3. Кеширование параметров сеанса

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

4. Логика объединения условий (ИЛИ / И)

В документах кассового учета ограничения часто применяются одновременно по организациям, кассам и подразделениям. Если шаблон RLS построен с использованием логического связующего «ИЛИ» между разрезами доступа, то пользователь, имеющий доступ к Кассе, сможет увидеть документ, даже если Подразделение в нем является для него «чужим».

Резюме

Чтобы успешно настроить доступ на уровне записей по подразделениям в 1С:УПП 1.3, проанализируем все роли, назначенные пользователю, пропишем шаблоны RLS для права Чтение на требуемые объекты и убедимся в отсутствии ролей, дающих «сквозной» доступ без ограничений.

← На главную