При настройке ограничений доступа на уровне записей (RLS) в современных конфигурациях на базе «Библиотеки стандартных подсистем» (УТ 11, ERP 2, КА 2) специалисты часто сталкиваются с ситуацией: после включения ограничений по складам пользователь перестает видеть вообще все документы, даже если они соответствуют разрешенным складам. Проблема может казаться «глюком» системы, но на самом деле она связана со сложной архитектурой хранения прав доступа в БСП.
Рассмотрим подробно, почему это происходит и как восстановить работоспособность системы, используя как быстрые решения, так и методически правильные подходы.
В конфигурациях 1С 8.3 механизм RLS работает не только через SQL-запросы в ролях, но и опирается на вспомогательные таблицы (регистры сведений). Если вы переносили профили групп доступа из одной базы в другую или создавали новые роли, внутренние идентификаторы могли «рассинхронизироваться». Система ищет права для объекта с одним внутренним кодом (GUID), а в таблицах доступа записан другой.
Для исправления этой ситуации нам необходимо принудительно обновить данные справочников идентификаторов и регистров прав. Выполним следующие шаги:
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника();
ПраваРолей. Именно из него система берет информацию о том, какие роли имеют доступ к тем или иным объектам. Используем команду:
РегистрыСведений.ПраваРолей.ОбновитьДанныеРегистра(Истина);
Проанализируем архитектуру «Управления доступом». БСП ожидает, что роли, участвующие в ограничении прав, названы по определенному стандарту. Если вы создали свою роль, например, ДоступСкладыОграничение, алгоритмы системы могут просто проигнорировать её при заполнении вспомогательных таблиц.
Важный нюанс: для корректной работы RLS название новой роли должно начинаться с префикса:
ЧтениеПеремещенийСУчетомСкладов)ДобавлениеИзменениеДокументовЗакупки)Если префикс отсутствует, роль может не попасть в регистр ТаблицыГруппДоступа, и система сформирует условие ГДЕ ЛОЖЬ в запросе, что и приведет к исчезновению всех документов из списка.
Разберем ситуацию, когда добавление роли Удаленный доступ (стандартный интерфейс OData) внезапно «оживляет» RLS. Это происходит потому, что данная роль содержит права на чтение практически всех метаданных без ограничений RLS.
Когда основная роль ограничивает доступ по складам, но при этом пользователю не хватает прав на какой-то технический реквизит, связанный справочник или внутренний параметр, используемый в шаблоне RLS, запрос аварийно скрывает данные. Роль OData «закрывает» эти пробелы в правах. Однако помните: это небезопасный костыль, так как он открывает доступ к данным через внешние интерфейсы. Мы рекомендуем использовать этот метод только для диагностики, чтобы убедиться, что проблема именно в недостатке прав на сопутствующие объекты.
Выясним причину, почему даже при правильных настройках профиля фильтрация не срабатывает. Часто проблема кроется в регистре сведений ТаблицыГруппДоступа. В нем должна быть четкая запись для каждой группы доступа пользователя с указанием типа документа (например, Перемещение товаров) и прав на чтение/изменение.
Посмотрим, как исправить записи в этом регистре:
ПраваРолей.ПраваРолей, как было описано в первом решении.ПриЗаписи, которая переформирует записи в ТаблицыГруппДоступа.В версиях УТ 11.3 и 11.4 активно внедрялся механизм «Ключей доступа». В этом режиме система не вычисляет права при каждом открытии списка, а берет готовые разрешения из регистров группы «Ключи доступа». Если эти данные не актуальны, ограничения будут работать неверно.
Для решения этой проблемы проанализируем состояние регламентных заданий:
Инструменты разработчика: Управление доступом (из дистрибутива БСП), которая позволяет запустить полное переформирование ключей доступа для конкретного пользователя.Если «каменный цветок» RLS не выходит, не спешите винить платформу. Скорее всего, нарушена целостность кэша прав в БСП. Алгоритм действий должен быть следующим:
Чтение / ДобавлениеИзменение).ИдентификаторыОбъектовМетаданных и ПраваРолей через программный код.Соблюдение этих методических рекомендаций позволит избежать использования сомнительных ролей-заплаток и настроить безопасную и производительную работу системы прав в УТ 11.