Администрирование · 10 мин
Как включить RLS в 1С: пошаговая настройка ограничения доступа к данным
Пошаговая инструкция по включению RLS в 1С: шаблоны ограничений, настройка ролей, проверка результата, типичные ошибки и влияние на производительность.
RLS (Record Level Security) — механизм платформы 1С:Предприятие, который ограничивает доступ пользователей не к объектам целиком, а к отдельным записям. Например, менеджер видит только своих контрагентов, а кассир — только кассы своей организации. Включить RLS можно двумя путями: использовать готовые настройки типовой конфигурации или настроить шаблоны ограничений вручную через конфигуратор.
В типовых решениях (1С:ERP, «Управление торговлей», «Комплексная автоматизация», БСП-based конфигурации) механизм уже встроен — его нужно только активировать и назначить профили групп доступа. В самописных и доработанных конфигурациях потребуется ручная работа с ролями и шаблонами RLS в конфигураторе.
Прежде чем включать ограничения, убедитесь, что у вас есть полные права (роль «Администратор системы» или «Полные права»), актуальная резервная копия базы и тестовая среда для проверки. Ошибка в шаблоне RLS способна скрыть данные у всех пользователей, включая администраторов отчётности.
Что такое RLS и когда его включать
RLS работает на уровне запросов к базе данных: платформа автоматически добавляет к каждому запросу условие отбора, определённое в шаблоне ограничения. Пользователь физически не получает записи, которые не соответствуют условию, — они не отображаются ни в списках, ни в отчётах, ни в подборе.
Механизм оправдан, когда в одной базе работают несколько организаций, филиалов или подразделений с разграничением ответственности. Типовые сценарии: разделение данных по организациям в холдинге, ограничение менеджеров своими клиентами, разграничение складов между кладовщиками, скрытие зарплатных данных от смежных отделов.
Если требуется просто запретить целый вид документов или справочников, RLS не нужен — достаточно обычных прав на объекты метаданных. RLS включают именно тогда, когда один и тот же объект должен быть частично виден разным пользователям.
Включение RLS в типовой конфигурации
В конфигурациях на базе Библиотеки стандартных подсистем (БСП) ограничение доступа настраивается без конфигуратора. Порядок действий един для большинства типовых решений.
- 1Откройте раздел «Администрирование» → «Настройки прав и пользователей».
- 2Включите флаг «Ограничивать доступ на уровне записей» (в ряде конфигураций — «Группы доступа»).
- 3Перейдите в «Профили групп доступа» и создайте или скопируйте профиль с нужными ролями.
- 4В профиле на закладке ограничений укажите разрешённые значения: организации, склады, подразделения, контрагенты.
- 5Создайте группу доступа, привяжите к ней профиль и добавьте пользователей.
- 6В карточке пользователя проверьте, что он включён в нужную группу доступа.
- 7Перезайдите в сеанс под пользователем и проверьте видимость данных.
Ключевой момент — профили и группы доступа работают в связке. Профиль определяет, какие роли и ограничения действуют, группа доступа связывает профиль с конкретными пользователями и значениями ограничений (например, конкретной организацией). Один пользователь может входить в несколько групп — тогда права суммируются.
После изменения профилей пользователям нужно перезайти в программу или дождаться обновления кэша прав — иначе старые настройки продолжат действовать в открытых сеансах.
Ручная настройка RLS в конфигураторе
Если типовых профилей недостаточно или конфигурация самописная, шаблоны ограничений задаются напрямую в ролях. Откройте конфигуратор, найдите нужную роль (например, «ЧтениеКонтрагентов»), в палитре свойств объекта метаданных перейдите на закладку «Права» и выберите право «Чтение» для нужного объекта.
В поле «Ограничение доступа» задаётся текст на языке запросов с использованием шаблонов. Простейший пример ограничения по организации через параметр сеанса:
Контрагенты ГДЕ
Контрагенты.Организация В (&ДоступныеОрганизации)
Значения параметров обычно заполняются при установке параметров сеанса в модуле сеанса — либо напрямую, либо через механизм БСП. В типовых решениях используются предопределённые шаблоны вида #ПоЗначениям("Документ.РеализацияТоваровУслуг","Чтение","",...), которые ссылаются на регистры сведений с разрешёнными значениями.
Где задаются значения ограничений
Сам шаблон RLS — только условие. Конкретные значения (какие организации, склады или контрагенты доступны) хранятся отдельно и подставляются в момент выполнения запроса. В типовых конфигурациях это регистры сведений подсистемы управления доступом, которые заполняются автоматически из групп доступа.
В ручной схеме значения передаются через параметры сеанса. В модуле сеанса в обработчике «УстановкаПараметровСеанса» определяется, какие значения получит текущий пользователь — например, список его организаций из регистра соответствия. Если параметр не установлен, ограничение может вернуть пустой результат, и пользователь не увидит вообще ничего.
Проверка результата
Проверка выполняется только под реальным пользователем с ограниченными правами — под администратором RLS обычно не действует, так как у полных прав ограничения не применяются. Создайте тестового пользователя, включите его в группу доступа и войдите в базу под ним.
Как проверить результат
Видны только документы разрешённых организаций/складов
Видны чужие документы или список полностью пуст
Отчёт показывает только разрешённые записи
В отчёте всплывают закрытые данные — значит, отчёт обходит RLS (привилегированный режим)
В подборе контрагентов видны только доступные
Подбор показывает всё — ограничение не задано для справочника
Списки открываются с обычной скоростью
Заметные задержки — шаблон слишком тяжёлый, нужна оптимизация
Отдельно проверьте динамические списки с произвольными запросами и отчёты на СКД: если запрос выполняется в привилегированном режиме или с отключённым ограничением, данные могут «просочиться» мимо RLS. Это одна из самых частых дыр в самодельных доработках.
Влияние на производительность и ограничения
RLS добавляет условие к каждому запросу к защищённой таблице, что увеличивает нагрузку на СУБД. На больших базах сложные шаблоны с соединениями нескольких таблиц способны заметно замедлить списки и отчёты. Чем проще условие и чем лучше проиндексированы поля в нём, тем меньше цена ограничения.
Практические рекомендации: используйте простые условия вида «поле В списке значений», избегайте вложенных запросов в шаблонах, следите, чтобы поля ограничения входили в индексы таблиц. В типовых конфигурациях уже применён оптимизированный вариант шаблонов — при доработке не упрощайте и не усложняйте их без замера производительности.
Помните и о функциональных границах: RLS не защищает данные при обмене, в фоновых заданиях под привилегированным режимом и при прямом доступе к базе вне платформы. Для полноценной защиты механизм дополняют правами на объекты, разграничением на уровне СУБД и контролем обменов.
Когда RLS не подходит: альтернативы
Варианты разграничения данных
Подходят, когда нужно закрыть целый вид документов или справочников. Проще и быстрее RLS, но не разделяют записи внутри объекта.
Стандарт для типовых конфигураций: гибко, настраивается без конфигуратора, но требует дисциплины в ведении профилей.
Каждый филиал работает в своей базе, обмен через распределённую ИБ. Полная изоляция данных, но сложнее консолидированная отчётность.
Максимальная изоляция для юридически независимых компаний. Минус — дублирование справочников и настроек.
Если база небольшая, а пользователей немного, часто рациональнее обойтись обычными ролями и договорённостями, чем платить производительностью за RLS. Решение принимайте исходя из требований безопасности: если утечка данных между подразделениями недопустима, RLS — обязательный минимум.
Что важно запомнить
В типовых конфигурациях RLS включается флагом в настройках прав и настройкой профилей групп доступа, в доработанных — шаблонами ограничений в ролях конфигуратора. Проверяйте результат только под тестовым пользователем, следите за производительностью шаблонов и помните, что привилегированный режим обходит ограничения.
Частые вопросы
Почему после включения RLS пользователь не видит ни одного документа?
Чаще всего пользователь не добавлен в группу доступа или в группе не указаны разрешённые значения (организации, склады). Вторая причина — неустановленный параметр сеанса, на который ссылается шаблон. Проверьте членство в группах доступа и перезапустите сеанс пользователя.
Работает ли RLS для пользователя с полными правами?
Нет. Для роли «Полные права» и административных ролей ограничения на уровне записей не применяются. Поэтому настройку всегда проверяют под отдельной учётной записью с ограниченным набором ролей.
Можно ли включить RLS только для одного справочника?
Да. Ограничение задаётся отдельно для каждого объекта метаданных и каждого права. В типовых конфигурациях это делается выбором разрешённых значений в профиле групп доступа, в конфигураторе — шаблоном для конкретного объекта в конкретной роли.
Сильно ли RLS замедляет работу базы?
Влияние зависит от сложности шаблона и объёма данных. Простые условия по индексированным полям почти незаметны, а шаблоны с соединениями и вложенными запросами на больших таблицах могут ощутимо замедлить списки и отчёты. При подозрении на тормоза замеряйте длительность запросов через технологический журнал.
Как временно отключить RLS, не удаляя настройки?
В типовых конфигурациях достаточно снять флаг «Ограничивать доступ на уровне записей» в настройках прав — профили и группы сохранятся и включатся при повторной активации. В ручной схеме можно исключить пользователей из групп доступа или выдать им роль без ограничений.
Почему в отчёте видны данные, закрытые RLS?
Отчёт или обработка выполняется в привилегированном режиме, где ограничения не действуют. Проверьте свойство «Привилегированный режим» у отчёта и вызовы УстановитьПривилегированныйРежим в коде. Для отчётов на СКД ограничения применяются, если запрос выполняется в обычном режиме.