Механизм Record Level Security (RLS) позволяет точечно управлять тем‚ какие именно записи видит каждый пользователь. В отличие от обычных прав доступа‚ которые разграничивают объекты целиком‚ RLS «режет» данные внутри одного справочника или документа. Ниже — пошаговый пример настройки ограничений в 1С:Бухгалтерия 3.0 и 1С:ERP.
Подготовка информационной базы
Перед тем как задавать RLS-ограничения‚ сделайте три обязательных действия:
- Создайте резервную копию ИБ. Ошибка в шаблоне ограничения может скрыть от пользователя важные данные.
- Очистите тестовую базу от лишних объектов. Упростите конфигурацию: оставьте один справочник «Контрагенты» и один документ «ПоступлениеТоваров»;
- Добавьте метаданные‚ к которым будем применять RLS:
- справочник «Организации»;
- документ «ПоступлениеТоваров» с реквизитом «Органция»;
- регистр сведений «ДоступныеОрганизации».
Включение функционала RLS
В типовых конфигурациях 1С параметр включается в разделе
Администрирование → Настройки пользователей и прав → Группы доступа.
Откройте Вариант работы «Производительный» и установите флаг
Ограничивать доступ на уровне записей.
Если база работает в режиме «Стандартный»‚ измените константу ОграничиватьДоступНаУровнеЗаписейУниверсально на ИСТИНА через конфигуратор.
Создание профиля RLS
Создаём справочник-фильтр
Нам нужен справочник «ДоступныеОрганизации»‚ который будет хранить связь «Пользователь — Организация»:
- Объект: Справочник.ДоступныеОрганизации
- Реквизиты:
- Пользователь (Справочник.Пользователи)
- Организация (Справочник.Организации)
Наполняем справочник
Добавьте две записи:
| Пользователь | Организация |
|---|---|
| ИвановАВ | ООО «Ромашка» |
| ПетроваОН | ООО «Астра» |
Построение шаблона ограничений
Откройте роль «Бухгалтер» в режиме Конфигуратор → вкладка Шаблоны ограничений.
Создайте новый шаблон ОграничениеПоОрганизации.
Ограничение для справочника «Организации»
&НаКлиенте Возврат ВЫБРАТЬ Организации.Ссылка ИЗ Справочник.Организации КАК Организации ГДЕ Организации.Ссылка В ( ВЫБРАТЬ ДоступныеОрганизации.Организация ИЗ Справочник.ДоступныеОрганизации КАК ДоступныеОрганизации ГДЕ ДоступныеОрганизации.Пользователь = &ТекущийПользователь );
Ограничение для документа «ПоступлениеТоваров»
&НаКлиенте Возврат ВЫБРАТЬ ПоступлениеТоваров.Ссылка ИЗ Документ.ПоступлениеТоваров КАК ПоступлениеТоваров ГДЕ ПоступлениеТоваров.Организация В ( ВЫБРАТЬ ДоступныеОрганизации.Организация ИЗ Справочник.ДоступныеОрганизации КАК ДоступныеОрганизации ГДЕ ДоступныеОрганизации.Пользователь = &ТекущийПользователь );
Важно! В запросе всегда используйте именованный параметр &ТекущийПользователь. Платформа сама подставит нужное значение.
Назначение роли пользователю
- Зайдите в Администрирование → Пользователи и права → Пользователи.
- Откройте карточку «ИвановАВ».
- На вкладке Роли добавьте роль «Бухгалтер».
- Сохраните изменения и нажмите Обновить права доступа.
Проверка работы RLS
Зайдите в 1С под пользователем «ИвановАВ»:
- Откройте список «Организации». Видим только «ООО «Ромашка»».
- Откройте журнал «ПоступлениеТоваров». Видим документы‚ в которых Организация = «ООО «Ромашка»».
- Документы «ООО «Астра»» скрыты.
Точно так же пользователь «ПетроваОН» увидит только «ООО «Астра»».
Распространённые ошибки и способы их устранения
| Ошибка | Симптом | Решение |
|---|---|---|
| Шаблон RLS не компилируется | Красный крестик в конфигураторе | Проверьте синтаксис запроса и корректность реквизитов. |
| Пользователь вообще не видит данные | Пустые списки | В справочнике «ДоступныеОрганизации» не заполнена строка для данного пользователя. |
| Деградация производительности | Медленное открытие форм | Добавьте индексы по полям «Организация» и «Пользователь». |
Расширение примера: доступ к нескольким организациям
Пусть бухгалтеру нужно видеть сразу две организации. Достаточно добавить ещё одну строку в «ДоступныеОрганизации»:
| Пользователь | Организация |
|---|---|
| ИвановАВ | ООО «Ромашка» |
| ИвановАВ | ООО «Астра» |
Без изменения кода ограничение уже будет работать: запрос вернет две организации.
Как удалить RLS-ограничение
- В конфигураторе откройте роль.
- Удалите шаблон «ОграничениеПоОрганизации».
- Обновите конфигурацию на сервере.
- В меню Администрирование → Обновить права доступа нажмите Выполнить.
Теперь все пользователи снова видят все записи.
RLS — мощный‚ но требовательный к дисциплине инструмент. Помните:
- Всегда проверяйте шаблоны на тестовой базе.
- Используйте справочники-фильтры вместо «жёстко зашитых» значений.
- Добавляйте индексы‚ чтобы избежать просадки скорости.
Грамотно настроенный RLS позволит безопасно работать в многофирменной базе‚ не боясь‚ что бухгалтер одной организации увидит данные другой.