Ограничение прав на уровне записей пример

Ограничение прав на уровне записей — как закрыть доступ к важным данным за пару кликов и спать спокойно

Бесплатная консультация юриста

+7 (800) 301-07-30

Реклама jurik.ru

Механизм Record Level Security (RLS) позволяет точечно управлять тем‚ какие именно записи видит каждый пользователь. В отличие от обычных прав доступа‚ которые разграничивают объекты целиком‚ RLS «режет» данные внутри одного справочника или документа. Ниже — пошаговый пример настройки ограничений в 1С:Бухгалтерия 3.0 и 1С:ERP.

Подготовка информационной базы

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

  1. Создайте резервную копию ИБ. Ошибка в шаблоне ограничения может скрыть от пользователя важные данные.
  2. Очистите тестовую базу от лишних объектов. Упростите конфигурацию: оставьте один справочник «Контрагенты» и один документ «ПоступлениеТоваров»;
  3. Добавьте метаданные‚ к которым будем применять RLS:
    • справочник «Организации»;
    • документ «ПоступлениеТоваров» с реквизитом «Органция»;
    • регистр сведений «ДоступныеОрганизации».

Включение функционала RLS

В типовых конфигурациях 1С параметр включается в разделе
Администрирование → Настройки пользователей и прав → Группы доступа.

Откройте Вариант работы «Производительный» и установите флаг
Ограничивать доступ на уровне записей.
Если база работает в режиме «Стандартный»‚ измените константу ОграничиватьДоступНаУровнеЗаписейУниверсально на ИСТИНА через конфигуратор.

Создание профиля RLS

Создаём справочник-фильтр

Нам нужен справочник «ДоступныеОрганизации»‚ который будет хранить связь «Пользователь — Организация»:

  • Объект: Справочник.ДоступныеОрганизации
  • Реквизиты:
    • Пользователь (Справочник.Пользователи)
    • Организация (Справочник.Организации)

Наполняем справочник

Добавьте две записи:

Пользователь Организация
ИвановАВ ООО «Ромашка»
ПетроваОН ООО «Астра»

Построение шаблона ограничений

Откройте роль «Бухгалтер» в режиме Конфигуратор → вкладка Шаблоны ограничений.
Создайте новый шаблон ОграничениеПоОрганизации.

Ограничение для справочника «Организации»

&НаКлиенте
Возврат ВЫБРАТЬ
 Организации.Ссылка
ИЗ
 Справочник.Организации КАК Организации
ГДЕ
 Организации.Ссылка В
 (
 ВЫБРАТЬ
 ДоступныеОрганизации.Организация
 ИЗ
 Справочник.ДоступныеОрганизации КАК ДоступныеОрганизации
 ГДЕ
 ДоступныеОрганизации.Пользователь = &ТекущийПользователь
 );

Ограничение для документа «ПоступлениеТоваров»

&НаКлиенте
Возврат ВЫБРАТЬ
 ПоступлениеТоваров.Ссылка
ИЗ
 Документ.ПоступлениеТоваров КАК ПоступлениеТоваров
ГДЕ
 ПоступлениеТоваров.Организация В
 (
 ВЫБРАТЬ
 ДоступныеОрганизации.Организация
 ИЗ
 Справочник.ДоступныеОрганизации КАК ДоступныеОрганизации
 ГДЕ
 ДоступныеОрганизации.Пользователь = &ТекущийПользователь
 );

Важно! В запросе всегда используйте именованный параметр &ТекущийПользователь. Платформа сама подставит нужное значение.

Назначение роли пользователю

  1. Зайдите в Администрирование → Пользователи и права → Пользователи.
  2. Откройте карточку «ИвановАВ».
  3. На вкладке Роли добавьте роль «Бухгалтер».
  4. Сохраните изменения и нажмите Обновить права доступа.

Проверка работы RLS

Зайдите в 1С под пользователем «ИвановАВ»:

  • Откройте список «Организации». Видим только «ООО «Ромашка»».
  • Откройте журнал «ПоступлениеТоваров». Видим документы‚ в которых Организация = «ООО «Ромашка»».
  • Документы «ООО «Астра»» скрыты.

Точно так же пользователь «ПетроваОН» увидит только «ООО «Астра»».

Распространённые ошибки и способы их устранения

Ошибка Симптом Решение
Шаблон RLS не компилируется Красный крестик в конфигураторе Проверьте синтаксис запроса и корректность реквизитов.
Пользователь вообще не видит данные Пустые списки В справочнике «ДоступныеОрганизации» не заполнена строка для данного пользователя.
Деградация производительности Медленное открытие форм Добавьте индексы по полям «Организация» и «Пользователь».

Расширение примера: доступ к нескольким организациям

Пусть бухгалтеру нужно видеть сразу две организации. Достаточно добавить ещё одну строку в «ДоступныеОрганизации»:

Пользователь Организация
ИвановАВ ООО «Ромашка»
ИвановАВ ООО «Астра»

Без изменения кода ограничение уже будет работать: запрос вернет две организации.

Как удалить RLS-ограничение

  1. В конфигураторе откройте роль.
  2. Удалите шаблон «ОграничениеПоОрганизации».
  3. Обновите конфигурацию на сервере.
  4. В меню Администрирование → Обновить права доступа нажмите Выполнить.

Теперь все пользователи снова видят все записи.

RLS — мощный‚ но требовательный к дисциплине инструмент. Помните:

  • Всегда проверяйте шаблоны на тестовой базе.
  • Используйте справочники-фильтры вместо «жёстко зашитых» значений.
  • Добавляйте индексы‚ чтобы избежать просадки скорости.

Грамотно настроенный RLS позволит безопасно работать в многофирменной базе‚ не боясь‚ что бухгалтер одной организации увидит данные другой.