Консоль запросов RLS
Изменения от 08.12.2019г. Изменена загрузка ролей из xml. Проверено и исправлено для версии платформы 8.3.14.1694. Во внешнюю обработку «Формирование текста запроса RLS» добавлена возможность посмотреть всех пользователей для выбранной роли.
Поставка включает в себя конфигурацию и внешнюю обработку.
Консоль можно использовать для анализа текста запроса RLS, который будет выполнен к данным под конкретным пользователем.
Например, мы смотрим ограничение доступа «Чтение» для некоторой роли типовой конфигурации 1С:
В зависимости от значения параметра сеанса (или может функциональной опции) будет вызван либо шаблон «ДляОбъекта», либо шаблон «ПоЗначениям».
Консоль позволяет преобразовать текст ограничения доступа в конкретное условие, которое будет добавлено к запросу при выборке данных из базы.
Порядок преобразования следующий:
- Замена всех вызовов шаблонов на текст шаблонов. Поддерживается ситуация, когда в одном ограничении доступа указано несколько шаблонов, в том числе, содержащие именованные параметры;
- Замена вызовов препроцессора значениями (#ИмяТекущейТаблицы и пр.);
- Вычисление функций СтрСодержит() в тексте;
- Вычисление инструкций #Если…#КонецЕсли и пр.
Для работы выгружаем описание ролей в xml файлы из конфигуратора с помощью опции «Выгрузить конфигурацию в файлы».
Если опции нет в интерфейсе, то её можно отобразить с помощью настройки главного окна.
Загружаем описание ролей в базу «Консоль запросов RLS».
После загрузки открываем форму консоли.
Здесь последовательно указываем поля для получения интересующего нас текста запроса. Нужно указать: конфигурацию, роль, объект метаданных, право и поля ограничений доступа (здесь для права «чтение» возможны варианты). После указания автоматически заполняется поле «ограничение доступа», если для указанных значений оно существует.
Переходим на закладку «консоль» и нажимаем «сформировать». Получаем промежуточный текст запроса для внешней обработки.
Открываем обработку «Формирование текста запроса RLS» в нужной базе под нужным пользователем (это важно, т.к. в тексте запроса участвуют параметры сеанса и функциональные опции, настроенные для конкретного пользователя).
Вставляем текст из консоли на закладку «исходный текст», нажимаем «сформировать» и на закладке «модифицированный текст» получаем результат.