Консоль можно использовать при анализе текста запроса RLS, который будет выполнен к данным под конкретным пользователем.
Консоль запросов RLS
Изменения от 08.12.2024г. Изменена загрузка ролей из xml. Проверено и исправлено для версии платформы 8.3.14.1694. Во внешнюю обработку «Формирование текста запроса RLS» добавлена возможность посмотреть всех пользователей для выбранной роли.
Поставка включает в себя конфигурацию и внешнюю обработку.
Консоль можно использовать для анализа текста запроса RLS, который будет выполнен к данным под конкретным пользователем.
Например, мы смотрим ограничение доступа «Чтение» для некоторой роли типовой конфигурации 1С:
В зависимости от значения параметра сеанса (или может функциональной опции) будет вызван либо шаблон «ДляОбъекта», либо шаблон «ПоЗначениям».
Консоль позволяет преобразовать текст ограничения доступа в конкретное условие, которое будет добавлено к запросу при выборке данных из базы.
Порядок преобразования следующий:
- Замена всех вызовов шаблонов на текст шаблонов. Поддерживается ситуация, когда в одном ограничении доступа указано несколько шаблонов, в том числе, содержащие именованные параметры;
- Замена вызовов препроцессора значениями (#ИмяТекущейТаблицы и пр.);
- Вычисление функций СтрСодержит() в тексте;
- Вычисление инструкций #Если…#КонецЕсли и пр.
Для работы выгружаем описание ролей в xml файлы из конфигуратора с помощью опции «Выгрузить конфигурацию в файлы».
Если опции нет в интерфейсе, то её можно отобразить с помощью настройки главного окна.
Загружаем описание ролей в базу «Консоль запросов RLS».
После загрузки открываем форму консоли.
Здесь последовательно указываем поля для получения интересующего нас текста запроса. Нужно указать: конфигурацию, роль, объект метаданных, право и поля ограничений доступа (здесь для права «чтение» возможны варианты). После указания автоматически заполняется поле «ограничение доступа», если для указанных значений оно существует.
Переходим на закладку «консоль» и нажимаем «сформировать». Получаем промежуточный текст запроса для внешней обработки.
Открываем обработку «Формирование текста запроса RLS» в нужной базе под нужным пользователем (это важно, т.к. в тексте запроса участвуют параметры сеанса и функциональные опции, настроенные для конкретного пользователя).
Вставляем текст из консоли на закладку «исходный текст», нажимаем «сформировать» и на закладке «модифицированный текст» получаем результат.
Несколько вопросов.
http://infostart.ru/public/264989/
1. Чем отличается от
2. Можно ли адаптировать эту консоль для 8.3.5 или даже 8.2?
3. Можно ли адаптировать под выгрузку команды «Выгрузить файлы конфигурации»?
При использовании команды «Выгрузить конфигурацию в файлы» выгружается вся конфигурация,
а при использовании «Выгрузить файлы конфигурации» можно самому выбрать выгружаемые объекты.
(1) BigClock,
http://infostart.ru/public/264989/ разбирается текст шаблона с подстановкой параметров, а здесь — текст ограничения доступа, в котором шаблоны могут как присутствовать так и нет (также шаблонов может быть несколько), также здесь представлена конфигурация, а не внешняя обработка (это более удобно в ряде случаев);
1. Судя по описанию, в
2. Адаптировать под предшествующие версии можно, если переопределить СтрНайти();
3. Адаптировать под «Выгрузить файлы конфигурации» можно минимальными усилиями. Со стороны прав доступа выгружаемые конфигуратором файлы схожи.
P.S. Немного посмотрел наhttp://infostart.ru/public/264989/ оставил пару комментариев
1С:Предприятие 8.3 (8.3.6.2076)
Все заполнил согласно инструкции.
Вот что выходит при выборе «Поля ограничения доступа»:
Ну и соответственно поле «Ограничение доступа» тоже не заполнено.
Что я делаю не так?
(3) kasper076,
Всё так. Просто из БП 2.0 загрузилось не очень красиво (сам применял для ERP). При выборе из справочника «Поля ограничения доступа» нужно подобрать правильный элемент. Сделать это можно по коду элемента справочника, а код посмотреть с помощью регистра сведений «ограничения доступа».
После выбора программа определить текст ограничения доступа, которое соответствует данному отбору.
(4) спасибо. Направление ясно.
Вот вариант обработки для обычных форм версий 8.3.5 и младше. Переопределена функция «СтрНайти()«:
Показать
Испугавшись праведного гнева гуру 1С, переписал с использованием регулярных выражений:
Показать
(6) kasper076, а вот так разве не проще?
Вот описание возвращаемого значения функции Найти()
Тип: Число.
Позиция первого знака найденной подстроки. Нумерация символов в строке начинается с 1. Если строка не содержит указанной подстроки, то возвращается 0.
Вот это вещь!
Обязательно внимательно ознакомлюсь.
Для толстого клиента 8.2 уже не делаете?
(7) premier, проще… Если, конечно, нужно найти первое вхождение. А если, к примеру, 3-е?
Адаптировал под 8.3.4 Думаю и на 8.2 будет работать. Добавил отборы в форме «Консоль запросов». Терь если конфигураций несколько, то чуток удобнее заполнять настройки. Постараюсь еще под обычные формы переделать.
P.S. Автору еще раз спасибо. и за проделанную работу, и за знания полученные в процессе изучения этого продукта.
(9) kasper076, согласен, если требуется необходимое по счёту вхождение найти.
Тогда следует ещё проверку ввести чтобы Кол_воВхождений.SubMatches.Count не оказалось меньше, чем НомерВхождения, иначе функция в исключение вылетит (если уж, испугавшись праведного гнева гуру 1С, писать :)).
(9) kasper076, наврал немного: вместо Кол_воВхождений.SubMatches.Count следует использовать Кол_воВхождений.Count
(11) premier, вот знал же, что гуру найдут к чему придраться )))) Пасиб. Исправлю обязательно.
Прошу автора выложить материалы в zip архиве, т.к. файл с расширением .exe не пропускают программы защиты
Видимо в 8.3.7 поменяли структуры выгрузки конфигурации — надо исправить строку:
на
После загрузки в консоль/настройки, роль пусто и поля ограничения пусто, ничего в этих справочниках нет.
(16) ок, в выходные посмотрю
(16) Ответ у rygov (15). После изменения структуры в 8.3.7 консоль не обновлялась. Сейчас обновил.
Кажется, в условиях динамического построения правил RLS в БСП это не нужно.
(19) Динамика БСП — это запрос к регистрам сведений, заполненным на основании групп доступа? Так это и является объектом анализа.
(20) А что тут анализировать? Запрос всегда будет один и тот же, потому что шаблон РЛС один и тот же.
А если хочешь анализировать логику — в поставке БСП есть обработка УправлениеДоступом которая поможет.
(21) Запрос будет разный, т.к. формирование текста запроса зависит от функциональных опций, параметров сеанса, настроек профилей и групп доступа.
(22) В новом RLS он всегда будет к одним и тем же регистрам ключей, который рассчитываются в фоне.
Что такое регистры ключей? Что значит в новом RLS? RLS в платформе не менялся. Что может рассчитываться в фоне, когда проверяются права доступа?