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

Уточните, где именно нарушается ограничение

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

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

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

Проверьте роли реального пользователя

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

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

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

Разберите условие RLS по частям

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

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

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

Проверьте параметры сеанса и данные доступа

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

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

Результат также может отличаться между файловым и клиент-серверным вариантами, обычным и фоновым выполнением. Это не означает, что правило следует переписать вслепую. Сначала установите, в каком контексте формируется запрос и какие параметры доступны в этом контексте.

Найдите участки, где RLS не участвует

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

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

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

Как провести проверку после исправления

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

СценарийОжидаемый результатЧто фиксировать
Разрешённая записьДоступна пользователюРоли и параметры сеанса
Чужая область данныхЗапись скрытаОбъект и операция
Несколько ролейРезультат соответствует их сочетаниюПолный набор ролей
Пустой реквизитДействует согласованное правилоИсходные значения полей

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