К статье
Практический материал

Администрирование · 10 мин

Как включить RLS в 1С: пошаговая настройка ограничения доступа к данным

Пошаговая инструкция по включению RLS в 1С: шаблоны ограничений, настройка ролей, проверка результата, типичные ошибки и влияние на производительность.

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

В типовых решениях (1С:ERP, «Управление торговлей», «Комплексная автоматизация», БСП-based конфигурации) механизм уже встроен — его нужно только активировать и назначить профили групп доступа. В самописных и доработанных конфигурациях потребуется ручная работа с ролями и шаблонами RLS в конфигураторе.

Прежде чем включать ограничения, убедитесь, что у вас есть полные права (роль «Администратор системы» или «Полные права»), актуальная резервная копия базы и тестовая среда для проверки. Ошибка в шаблоне RLS способна скрыть данные у всех пользователей, включая администраторов отчётности.

Что такое RLS и когда его включать

RLS работает на уровне запросов к базе данных: платформа автоматически добавляет к каждому запросу условие отбора, определённое в шаблоне ограничения. Пользователь физически не получает записи, которые не соответствуют условию, — они не отображаются ни в списках, ни в отчётах, ни в подборе.

Механизм оправдан, когда в одной базе работают несколько организаций, филиалов или подразделений с разграничением ответственности. Типовые сценарии: разделение данных по организациям в холдинге, ограничение менеджеров своими клиентами, разграничение складов между кладовщиками, скрытие зарплатных данных от смежных отделов.

Если требуется просто запретить целый вид документов или справочников, RLS не нужен — достаточно обычных прав на объекты метаданных. RLS включают именно тогда, когда один и тот же объект должен быть частично виден разным пользователям.

Включение RLS в типовой конфигурации

В конфигурациях на базе Библиотеки стандартных подсистем (БСП) ограничение доступа настраивается без конфигуратора. Порядок действий един для большинства типовых решений.

Порядок включения RLS в типовой 1С
  1. 1
    Откройте раздел «Администрирование» → «Настройки прав и пользователей».
  2. 2
    Включите флаг «Ограничивать доступ на уровне записей» (в ряде конфигураций — «Группы доступа»).
  3. 3
    Перейдите в «Профили групп доступа» и создайте или скопируйте профиль с нужными ролями.
  4. 4
    В профиле на закладке ограничений укажите разрешённые значения: организации, склады, подразделения, контрагенты.
  5. 5
    Создайте группу доступа, привяжите к ней профиль и добавьте пользователей.
  6. 6
    В карточке пользователя проверьте, что он включён в нужную группу доступа.
  7. 7
    Перезайдите в сеанс под пользователем и проверьте видимость данных.

Ключевой момент — профили и группы доступа работают в связке. Профиль определяет, какие роли и ограничения действуют, группа доступа связывает профиль с конкретными пользователями и значениями ограничений (например, конкретной организацией). Один пользователь может входить в несколько групп — тогда права суммируются.

После изменения профилей пользователям нужно перезайти в программу или дождаться обновления кэша прав — иначе старые настройки продолжат действовать в открытых сеансах.

Ручная настройка RLS в конфигураторе

Если типовых профилей недостаточно или конфигурация самописная, шаблоны ограничений задаются напрямую в ролях. Откройте конфигуратор, найдите нужную роль (например, «ЧтениеКонтрагентов»), в палитре свойств объекта метаданных перейдите на закладку «Права» и выберите право «Чтение» для нужного объекта.

В поле «Ограничение доступа» задаётся текст на языке запросов с использованием шаблонов. Простейший пример ограничения по организации через параметр сеанса:

Контрагенты ГДЕ

Контрагенты.Организация В (&ДоступныеОрганизации)

Значения параметров обычно заполняются при установке параметров сеанса в модуле сеанса — либо напрямую, либо через механизм БСП. В типовых решениях используются предопределённые шаблоны вида #ПоЗначениям("Документ.РеализацияТоваровУслуг","Чтение","",...), которые ссылаются на регистры сведений с разрешёнными значениями.

Где задаются значения ограничений

Сам шаблон RLS — только условие. Конкретные значения (какие организации, склады или контрагенты доступны) хранятся отдельно и подставляются в момент выполнения запроса. В типовых конфигурациях это регистры сведений подсистемы управления доступом, которые заполняются автоматически из групп доступа.

В ручной схеме значения передаются через параметры сеанса. В модуле сеанса в обработчике «УстановкаПараметровСеанса» определяется, какие значения получит текущий пользователь — например, список его организаций из регистра соответствия. Если параметр не установлен, ограничение может вернуть пустой результат, и пользователь не увидит вообще ничего.

Проверка результата

Проверка выполняется только под реальным пользователем с ограниченными правами — под администратором RLS обычно не действует, так как у полных прав ограничения не применяются. Создайте тестового пользователя, включите его в группу доступа и войдите в базу под ним.

Контрольные точки

Как проверить результат

Список документов под тестовым пользователем
Норма

Видны только документы разрешённых организаций/складов

Тревожный признак

Видны чужие документы или список полностью пуст

Отчёты по тем же данным
Норма

Отчёт показывает только разрешённые записи

Тревожный признак

В отчёте всплывают закрытые данные — значит, отчёт обходит RLS (привилегированный режим)

Подбор в полях ввода
Норма

В подборе контрагентов видны только доступные

Тревожный признак

Подбор показывает всё — ограничение не задано для справочника

Производительность списков
Норма

Списки открываются с обычной скоростью

Тревожный признак

Заметные задержки — шаблон слишком тяжёлый, нужна оптимизация

Отдельно проверьте динамические списки с произвольными запросами и отчёты на СКД: если запрос выполняется в привилегированном режиме или с отключённым ограничением, данные могут «просочиться» мимо RLS. Это одна из самых частых дыр в самодельных доработках.

Влияние на производительность и ограничения

RLS добавляет условие к каждому запросу к защищённой таблице, что увеличивает нагрузку на СУБД. На больших базах сложные шаблоны с соединениями нескольких таблиц способны заметно замедлить списки и отчёты. Чем проще условие и чем лучше проиндексированы поля в нём, тем меньше цена ограничения.

Практические рекомендации: используйте простые условия вида «поле В списке значений», избегайте вложенных запросов в шаблонах, следите, чтобы поля ограничения входили в индексы таблиц. В типовых конфигурациях уже применён оптимизированный вариант шаблонов — при доработке не упрощайте и не усложняйте их без замера производительности.

Помните и о функциональных границах: RLS не защищает данные при обмене, в фоновых заданиях под привилегированным режимом и при прямом доступе к базе вне платформы. Для полноценной защиты механизм дополняют правами на объекты, разграничением на уровне СУБД и контролем обменов.

Типичные ошибки
01
Задание ограничения только для права «Чтение», но не для «Просмотр» и «Изменение» — пользователь видит записи, но не может их открыть, или наоборот получает лишний доступ.
02
Проверка настройки под администратором — у полных прав RLS не действует, поэтому проблема обнаруживается только у реальных пользователей.
03
Забытый параметр сеанса — шаблон ссылается на неустановленный параметр, и пользователь не видит ничего.
04
Сложные шаблоны с соединениями — списки и отчёты начинают тормозить на больших объёмах данных.
05
Отчёты и обработки в привилегированном режиме — обходят RLS и раскрывают закрытые данные.

Когда RLS не подходит: альтернативы

Варианты разграничения данных

Обычные права на объекты

Подходят, когда нужно закрыть целый вид документов или справочников. Проще и быстрее RLS, но не разделяют записи внутри объекта.

RLS через группы доступа

Стандарт для типовых конфигураций: гибко, настраивается без конфигуратора, но требует дисциплины в ведении профилей.

Разделение по базам (РИБ)

Каждый филиал работает в своей базе, обмен через распределённую ИБ. Полная изоляция данных, но сложнее консолидированная отчётность.

Отдельные информационные базы

Максимальная изоляция для юридически независимых компаний. Минус — дублирование справочников и настроек.

Если база небольшая, а пользователей немного, часто рациональнее обойтись обычными ролями и договорённостями, чем платить производительностью за RLS. Решение принимайте исходя из требований безопасности: если утечка данных между подразделениями недопустима, RLS — обязательный минимум.

Итог

Что важно запомнить

В типовых конфигурациях RLS включается флагом в настройках прав и настройкой профилей групп доступа, в доработанных — шаблонами ограничений в ролях конфигуратора. Проверяйте результат только под тестовым пользователем, следите за производительностью шаблонов и помните, что привилегированный режим обходит ограничения.

Частые вопросы

Почему после включения RLS пользователь не видит ни одного документа?

Чаще всего пользователь не добавлен в группу доступа или в группе не указаны разрешённые значения (организации, склады). Вторая причина — неустановленный параметр сеанса, на который ссылается шаблон. Проверьте членство в группах доступа и перезапустите сеанс пользователя.

Работает ли RLS для пользователя с полными правами?

Нет. Для роли «Полные права» и административных ролей ограничения на уровне записей не применяются. Поэтому настройку всегда проверяют под отдельной учётной записью с ограниченным набором ролей.

Можно ли включить RLS только для одного справочника?

Да. Ограничение задаётся отдельно для каждого объекта метаданных и каждого права. В типовых конфигурациях это делается выбором разрешённых значений в профиле групп доступа, в конфигураторе — шаблоном для конкретного объекта в конкретной роли.

Сильно ли RLS замедляет работу базы?

Влияние зависит от сложности шаблона и объёма данных. Простые условия по индексированным полям почти незаметны, а шаблоны с соединениями и вложенными запросами на больших таблицах могут ощутимо замедлить списки и отчёты. При подозрении на тормоза замеряйте длительность запросов через технологический журнал.

Как временно отключить RLS, не удаляя настройки?

В типовых конфигурациях достаточно снять флаг «Ограничивать доступ на уровне записей» в настройках прав — профили и группы сохранятся и включатся при повторной активации. В ручной схеме можно исключить пользователей из групп доступа или выдать им роль без ограничений.

Почему в отчёте видны данные, закрытые RLS?

Отчёт или обработка выполняется в привилегированном режиме, где ограничения не действуют. Проверьте свойство «Привилегированный режим» у отчёта и вызовы УстановитьПривилегированныйРежим в коде. Для отчётов на СКД ограничения применяются, если запрос выполняется в обычном режиме.