КОНСТРУКТОР
Ограничения данных (RLS)
Ограничения данных (Row-Level Security, RLS) — это правила, которые определяют, какие записи видит пользователь. В отличие от обычных прав (может ли пользователь открыть справочник), RLS ограничивает данные внутри объекта.
Типовой пример: продавец видит только свои заказы, кладовщик — только товары своего склада.
RLS настраивается для группы пользователей, в карточке группы, раздел «Ограничения данных».
# Что написано на экране
Заголовок — «Ограничения данных» с числом условий, пояснение:
Ограничения уровня записей (RLS): пользователи группы будут видеть только записи, соответствующие условию. Применяется в списках, формах, поиске и отчётах.
Ограничения применяются во всех серверных чтениях: списки, открытие карточки, глобальный поиск, API и чтение данных из модулей (а значит, и в отчётах).
# Быстрые шаблоны
Над списком условий есть кнопки-шаблоны:
| Шаблон | Что добавляет |
|---|---|
| Только свои записи | Для всех справочников и документов условие «Автор (creater) = Текущий пользователь» |
| Только свой склад | Для объектов, где есть поле Склад, — условие «Склад = Поле пользователя «Склад» |
| Только свой филиал | Для объектов с полем Филиал — условие «Филиал = Поле пользователя «Филиал» |
Повторное нажатие на шаблон не создаёт дубликат: одинаковые условия пропускаются.
Кнопка Добавить условие создаёт пустое условие вручную.
# Одно условие
Каждое условие — это строка с шестью настройками:
| Настройка | Что означает |
|---|---|
| Объект | Справочник или документ, к которому применяется ограничение |
| Поле | Реквизит, по которому сравнивается. Служебное поле creater (автор) есть у каждого объекта |
| Оператор | = (равно), ≠ (не равно), в списке, содержит |
| Значение | С чем сравнивать. Здесь два списка: источник значения и само значение |
| Режим | Скрыть или Запретить |
| 🗑 | Удалить условие |
Под условием появляется «пилюля» с итоговым фильтром: «Фильтр группы: <условие>», а для режима «Запретить» — дополнительно (запрет чтения).
# Источник значения
| Источник | Что подставляется | Поле для ввода |
|---|---|---|
| Константа | Значение, которое вы вводите. Можно перечислить несколько значений через запятую — тогда работает как список | Поле «Значение (через запятую — список)» |
| Тек. пользователь | Текущий пользователь системы | — (просто надпись «Текущий пользователь») |
| Поле пользователя | Значение реквизита пользователя, например его склад | Поле «Поле пользователя, напр. Склад» |
| Группы | Группы текущего пользователя | — (надпись «Группы пользователя») |
# Режим: скрыть или запретить
| Режим | Что происходит с записью, не подходящей под условие | Что происходит с записью, подходящей под условие |
|---|---|---|
| Скрыть | Она просто не видна: как будто её нет | Видна |
| Запретить | Видна | Чтение запрещено (ошибка доступа) |
Проще говоря: Скрыть — «не показывай лишнее», Запретить — «покажи, но не давай открыть».
Внимание: в режиме Запретить смысл условия обратный — запрещается то, что совпадает с условием. Это удобно для запретов: «запретить чтение документов своего склада».
# Если условий нет
Экран показывает:
⛃
Нет ограничений — группа видит все записи объектов
Добавьте условие или используйте шаблон# Как работают несколько условий
| Ситуация | Поведение |
|---|---|
| У группы несколько условий по разным объектам | Каждое действует на свой объект |
| Пользователь в нескольких группах | Условия объединяются по «наименее ограничивающему» правилу для чтения |
| Пользователь — администратор | Ограничения не применяются |
# Примеры
Продавец видит только свои заказы. Объект Заказ покупателя, Поле creater, Оператор =, Источник Тек. пользователь, Режим Скрыть. Проще: шаблон Только свои записи.
Кладовщик — только свой склад. Объект Остатки товаров (или Приходная накладная), Поле Склад, Оператор =, Источник Поле пользователя → Склад, Режим Скрыть.
Запретить чтение документов чужого склада. Объект Приходная накладная, Поле Склад, Оператор ≠, Источник Поле пользователя → Склад, Режим Запретить. Так обычные записи открываются, а чужие — нет.
# Частые ошибки
| Ошибка | Последствие |
|---|---|
| Условие по полю, которого нет в объекте | Условие не сработает — проверьте список полей |
| Забыли выбрать Объект | Условие не применяется |
| Ожидание, что RLS действует только в списках | RLS действует везде: карточка, поиск, отчёты, API |
| Расчёт на доступ администратора | Администраторы обходят RLS — тестируйте на обычном пользователе |
