← Назад к вопросам
Чем полезны параметры сеанса при работе с RLS?
3.0 Senior🔥 121 комментариев
#RLS и права#Стандарты разработки
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Параметры сеанса и RLS в 1С
RLS (Row-Level Security) — это механизм разграничения доступа к строкам данных. Параметры сеанса — специальные переменные, которые хранят контекст текущего пользователя и используются RLS для фильтрации записей.
Назначение параметров сеанса в RLS
Параметры сеанса полезны потому что:
- Автоматическая фильтрация данных — определяют, какие строки видит пользователь
- Хранение контекста пользователя — содержат информацию о подразделении, организации, филиале
- Единая точка управления — централизованное управление правами доступа
- Производительность — фильтрация на уровне БД, а не приложения
Как работает RLS с параметрами сеанса
// Установка параметра сеанса при входе пользователя
Процедура УстановитьПараметрыДоступа(Пользователь)
НаборПараметровСеанса = Новый Массив();
НаборПараметровСеанса.Добавить(Новый ОписаниеПараметра(
"Подразделение",
Тип("СправочникСсылка.Подразделения"),
ПолучитьПодразделениеПользователя(Пользователь)));
УстановитьПараметрыСеанса(НаборПараметровСеанса);
КонецПроцедуры
Пример использования в запросе
При конфигурировании таблицы справочника или документа можно установить RLS правило:
// Пример SQL фильтрации (на уровне БД)
ОМ.Подразделение = &Подразделение
// где &Подразделение — параметр сеанса
Запрос автоматически фильтруется:
Запрос = Новый Запрос()
Запрос.Текст = "SELECT * FROM Справочник_Сотрудники WHERE Подразделение = &Подразделение";
Результат = Запрос.Выполнить();
// Вернёт только сотрудников текущего подразделения
Основные преимущества
- Безопасность — пользователь не может обойти ограничение простой модификацией запроса
- Прозрачность — разработчик не пишет условия вручную в каждом запросе
- Управляемость — изменение прав требует изменения одного параметра, а не переработки кода
- Согласованность — все отчёты и формы автоматически уважают права доступа
- Аудитируемость — система логирует доступ на уровне БД
Практический пример
В производственной системе:
// Менеджер видит только заказы своего подразделения
При входе менеджера филиала "Москва":
УстановитьПараметрыСеанса(
Новый Массив(Новый ОписаниеПараметра("Филиал", , СправочникиУправляемые.Филиалы.Москва)));
// Все его запросы автоматически фильтруются:
// SELECT * FROM Заказы WHERE Филиал = Москва
// Менеджер филиала "СПб" видит только его заказы
При входе менеджера филиала "СПб":
УстановитьПараметрыСеанса(
Новый Массив(Новый ОписаниеПараметра("Филиал", , СправочникиУправляемые.Филиалы.СПб)));
Критические аспекты
- Параметры сеанса глобальны — действуют на весь сеанс до отключения
- Типизированные данные — должны передаваться правильного типа
- Производительность — фильтрация на БД быстрее, чем в памяти приложения
- Администраторы БД — обходят RLS при подключении напрямую, поэтому нужна аудит на уровне СУБД
Итого: параметры сеанса — критический инструмент RLS для безопасного разграничения доступа к данным.