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