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

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

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

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

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

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

Ниже разобраны все рабочие способы — от мягкого отключения для конкретного пользователя до полного снятия ограничений в конфигураторе. Любые изменения прав делайте только после резервной копии и желательно сначала на копии базы.

Как понять, что проблема именно в RLS

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

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

Данные видны администратору, но не пользователюСрабатывает RLS или группы доступа

Сравните состав ролей и членство в группах доступа

Запрос в консоли «разросся» соединениямиК запросу применён шаблон ограничения

Смотрите роли объекта и поля с ограничением

Обмен данными не выгружает часть объектовСлужебный пользователь ограничен RLS

Проверьте права пользователя, под которым работает обмен

Отчёт показывает меньше данных, чем естьОграничение применяется в СКД

Проверьте настройки ролей на чтение таблиц отчёта

Способ 1. Отключить RLS для конкретного пользователя

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

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

Порядок действий для пользователя
  1. 1
    Откройте Администрирование → Пользователи и найдите нужную учётную запись
  2. 2
    Проверьте назначенные профили и роли, сравните с пользователем, у которого всё видно
  3. 3
    Откройте Группы доступа и проверьте членство пользователя и разрешённые значения
  4. 4
    Исключите пользователя из ограничивающей группы или добавьте нужные значения доступа
  5. 5
    Попросите пользователя перезайти в программу и проверьте видимость данных

Способ 2. Отключить ограничение через настройки конфигурации

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

Также в конфигурациях на БСП есть настройка «Ограничивать доступ на уровне записей» — при её отключении типовой механизм групп доступа перестаёт фильтровать записи. Учтите: флажок влияет на всю базу, а не на одного пользователя. Перед отключением убедитесь, что никто из сотрудников не должен видеть ограниченный набор данных, иначе вы откроете доступ всем сразу.

Способ 3. Убрать шаблоны RLS в конфигураторе

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

Чтобы отключить RLS для конкретного объекта, выделите объект в списке прав роли и очистите поле «Ограничение доступа» для нужных прав (Чтение, Добавление, Изменение, Удаление) и полей. Альтернатива — удалить или закомментировать текст самого шаблона, но тогда ограничение пропадёт у всех объектов, использующих этот шаблон. После правок обновите конфигурацию базы данных и проверьте работу под обычным пользователем.

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

Способ 4. Обойти RLS в запросах и коде

Часто отключать ограничение глобально не нужно — достаточно, чтобы конкретный отчёт, обработка или обмен видели все данные. Для этого есть два программных приёма. Первый — выполнение кода в привилегированном режиме: в привилегированном модуле или после вызова УстановитьПривилегированныйРежим(Истина) проверка прав, включая RLS, не выполняется.

Второй приём — ключевое слово РАЗРЕШЕННЫЕ в тексте запроса работает наоборот (оно включает проверку), а чтобы RLS не применялся, запрос должен выполняться в привилегированном режиме. На практике обмены данными и регламентные задания оформляют именно через привилегированный режим, чтобы служебная логика не зависела от прав пользователя, запустившего операцию.

bsl
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Документ.РеализацияТоваровУслуг";
Результат = Запрос.Выполнить().Выгрузить();
УстановитьПривилегированныйРежим(Ложь);

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

Почему RLS тормозит базу и стоит ли отключать его ради скорости

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

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

Сравнение способов отключения RLS

Права и группы доступа пользователя

Быстро и безопасно, не трогает конфигурацию; подходит для отдельных пользователей, но не решает проблему глобально

Функциональные опции и настройки БСП

Отключает типовой механизм без конфигуратора; действует на всю базу сразу

Правка ролей и шаблонов в конфигураторе

Полный контроль, но снимает объекты с поддержки; лучше делать через расширение

Привилегированный режим в коде

Точечный обход для отчётов и обменов; не влияет на интерактивную работу пользователей

Проверка результата и типичные ошибки

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

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

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

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

Видны все ожидаемые записи

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

Часть записей по-прежнему скрыта

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

Нет лишних соединений с таблицами доступа

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

К запросу добавляются условия RLS

Отчёт СКД
Норма

Суммы совпадают с данными под полными правами

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

Отчёт показывает меньше данных

Обмен данными
Норма

Выгружаются все объекты по правилам

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

Часть объектов пропускается без ошибок

Типичные ошибки
01
Правка типовой роли напрямую вместо расширения — изменения теряются при обновлении конфигурации
02
Удаление шаблона ограничения, который используют десятки объектов, — RLS пропадает там, где не планировали
03
Проверка результата под полными правами — ограничение на администратора не действует, и проблема кажется решённой
04
Забытый привилегированный режим без возврата в Ложь — последующий код работает без проверки прав
05
Отключение RLS ради скорости без анализа шаблонов — часто достаточно было оптимизировать текст ограничения
Итог

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

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

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

Можно ли отключить RLS без конфигуратора?

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

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

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

Отключается ли RLS при полных правах?

Да, для ролей с признаком полных прав и административных ролей ограничения на уровне записей не применяются. Именно поэтому проверять результат отключения нужно под обычным пользователем, а не под администратором.

Как отключить RLS только для обмена данными?

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

Что будет при обновлении конфигурации, если я убрал шаблоны из типовой роли?

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

Влияет ли отключение RLS на производительность?

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