← Назад к вопросам

Чем полезны параметры сеанса при работе с RLS?

3.0 Senior🔥 121 комментариев
#RLS и права#Стандарты разработки

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Параметры сеанса и RLS в 1С

RLS (Row-Level Security) — это механизм разграничения доступа к строкам данных. Параметры сеанса — специальные переменные, которые хранят контекст текущего пользователя и используются RLS для фильтрации записей.

Назначение параметров сеанса в RLS

Параметры сеанса полезны потому что:

  1. Автоматическая фильтрация данных — определяют, какие строки видит пользователь
  2. Хранение контекста пользователя — содержат информацию о подразделении, организации, филиале
  3. Единая точка управления — централизованное управление правами доступа
  4. Производительность — фильтрация на уровне БД, а не приложения

Как работает RLS с параметрами сеанса

// Установка параметра сеанса при входе пользователя
Процедура УстановитьПараметрыДоступа(Пользователь)
    НаборПараметровСеанса = Новый Массив();
    НаборПараметровСеанса.Добавить(Новый ОписаниеПараметра(
        "Подразделение",
        Тип("СправочникСсылка.Подразделения"),
        ПолучитьПодразделениеПользователя(Пользователь)));
    
    УстановитьПараметрыСеанса(НаборПараметровСеанса);
КонецПроцедуры

Пример использования в запросе

При конфигурировании таблицы справочника или документа можно установить RLS правило:

// Пример SQL фильтрации (на уровне БД)
ОМ.Подразделение = &Подразделение
// где &Подразделение — параметр сеанса

Запрос автоматически фильтруется:

Запрос = Новый Запрос()
Запрос.Текст = "SELECT * FROM Справочник_Сотрудники WHERE Подразделение = &Подразделение";
Результат = Запрос.Выполнить();
// Вернёт только сотрудников текущего подразделения

Основные преимущества

  • Безопасность — пользователь не может обойти ограничение простой модификацией запроса
  • Прозрачность — разработчик не пишет условия вручную в каждом запросе
  • Управляемость — изменение прав требует изменения одного параметра, а не переработки кода
  • Согласованность — все отчёты и формы автоматически уважают права доступа
  • Аудитируемость — система логирует доступ на уровне БД

Практический пример

В производственной системе:

// Менеджер видит только заказы своего подразделения
При входе менеджера филиала "Москва":
    УстановитьПараметрыСеанса(
        Новый Массив(Новый ОписаниеПараметра("Филиал", , СправочникиУправляемые.Филиалы.Москва)));

// Все его запросы автоматически фильтруются:
// SELECT * FROM Заказы WHERE Филиал = Москва

// Менеджер филиала "СПб" видит только его заказы
При входе менеджера филиала "СПб":
    УстановитьПараметрыСеанса(
        Новый Массив(Новый ОписаниеПараметра("Филиал", , СправочникиУправляемые.Филиалы.СПб)));

Критические аспекты

  • Параметры сеанса глобальны — действуют на весь сеанс до отключения
  • Типизированные данные — должны передаваться правильного типа
  • Производительность — фильтрация на БД быстрее, чем в памяти приложения
  • Администраторы БД — обходят RLS при подключении напрямую, поэтому нужна аудит на уровне СУБД

Итого: параметры сеанса — критический инструмент RLS для безопасного разграничения доступа к данным.