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