Все вы, наверное знакомы с RLS (ограничения на уровне записей), но не многие смогут с лёгкостью написать свой шаблон и ограничения по нему, а тем более разобраться в чужих.
Эта обработка позволяет ввести текст шаблона ограничения и текст ограничения доступа для определённой таблицы и на выходе получить готовый запрос и его параметры, который в последствии легко отладить в такой обработке, как «Консоль запросов».
Эта обработка будет полезна как для программистов, для отладки собственных ограничений, так и администраторам, которым может понадобится для определения причины недоступности тех или иных данных у конкретных пользователей.
Исправлено:
- Указывается #ИмяТекущейТаблицы, #ИмяТекущегоПраваДоступа
- Выполняется инструкция СтрСодержит()
Выявленные ошибки:
- Пока таковых нет
Скачал обработку. Запустил в демо базе бухгалтерии. И НЕ РАБОТАЕТ.
Посмотрел код, на мой взгляд можно было найти решение и получше. К примеру, один из правильных вариантов использование варианта алгоритма конечных автоматов.
К недостаткам могу отнести отсутствие в примере хотя бы краткой инструкции, и возможно добавления некого упрощенного варианта консоли запросов для проверки результата на месте.
upd. Решил попробовать на другой конфигурации (УТ) — вроде отработало. Поэтому делаю вывод, что данная обработка работоспособна не для всех версий и конфигураций. Предлагаю автору, все же доработать ее, либо описать ограничения, чтобы не вводить в заблуждение пользователей.
Подскажите в какой именно конфигурации вы запускали и под каким пользователем, а также что именно вводили.
Я не претендую на ультра правильное решение этой задачи, делал обработку для себя и она мне помогла в моих проблемах. Развивать дальше планирую по мере потребностей, с консолью конечно удобнее, но проще совместить её с более продвинутой версией.
Возьмем обработку на заметку, сейчас не актуально, но бывало нужно было.
На мой взгляд такие вещи не стоит доверять автоматике. Занимался этим вопросом, сам писал шаблоны ограничений RLS. Тут как говорится «Семь раз отмерь, один — отрежь». Очень аккуратно надо. Поэтому совет: САМОМУ разобраться в механизме RLS и запросах ограничений (можно воспользоваться готовыми шаблонами, но обязательно разобрать их по косточкам), на основе готовых написать свои, и тестировать, тестировать, тестировать (под разными пользователями и с разными настройками)
(4) DAnry, Собственно тут и нет никакой автоматики, это всего лишь свёртываение шаблона до обыкновенного запроса, чтобы легче было видеть ошибки.
Было бы неплохо сделать обратное преобразование: из запроса 1С в текст ограничения.
Ну и результат запроса можно прямо в обработку выводить.
инструкции предпроцессору обрабатываются? если да, то как? имею в виду такую конструкцию #Если #Иначе #КонецЕсли
Конечно, обработка очень далека от совершенства
(6) kser87, #ЕСЛИ #ТОГДА #ИНАЧЕЕСЛИ #ИНАЧЕ #КОНЕЦЕСЛИ — обрабатываются, именно для этого и делал.
хорошая штука, а то со стороны платформы для RLS ни сделано ничего ( даже отбора метаданных по ролям нету, не говоря уж об отладке RLS или конструкторе шаблонов
Надеюсь, будет доработано под свежие версии БСП. Подписался.
Возьму обработку на заметку, сейчас не актуально, но бывало нужно было.
Спасибо.
(6) kser87, что в этом сложного?
Текст ограничения — это и есть текст запроса. Просто без «ВЫБРАТЬ», без явного указания одной таблицы и без кучи возможностей обычного запроса.
Каким образом вы захотите это инструкциями препроцессору разбавить, ни одна обработка не знает. А отсутствующие возможности — ну будет она ругаться, что у вас «ПОМЕСТИТЬ» в запросе. Толку-то от этого? все равно руками разбирать.
1. Хотелось бы видеть более подробную инструкцию и простой пример
2. Нет возможности сохранять настройки, идеально — навигация по сохраненным настройкам — это видимо уже следующий уровень — среда разработки для RLS.
3. Возможность выполнения сформированного запроса с заданными параметрами
спасибо, обработка помогла разобраться с некоторыми шаблонами ут11
я для этих целей просто консоль запросов использую. Не понимаю пользы этой обработки
Ручками несколько буквочек тыкнуть — превратить шаблон в запрос — если человек этого не может то ему ни какая обработка не поможет
Под УПП (обычное приложение) не запустилась…
Очень полезная обработка.
Без нее слишком много буковок в обычных консолях придется переделывать.
(17) Попробуй запрос БСП получить в консоли запросов и засеки время.
(19)DISAoner, какой-то маленький у вас шаблон =)
Хотел вставить шаблон из УТ11, но нарвался на это:
(20) Да, в новых конфах РЛС вообще клевый))
(20) дело в том, что он не мой и я хотел бы его разобрать при помощи данной обработки, но она не открывается. При попытке открыть файл ничего не происходит((
(22) DISAoner, Создайте пустую конфигурацию с управляемым интерфейсом и откройте мою обработку, должно сработать.
на УТ 11 не работает
СтрСодержит() в выражении для Вычислить() под УФ(толстый клиент) идет по ветке Исключение
то есть не отрабатывает
запускаю туже конфу под обычными формами (толстый клиент) вычисляет без проблем
почему так?
(25) Makushimo, Что-то я вас совсем не понял, подробнее пожалуйста и желательно с примерами.
Не работает (результат пустой).
Тексты шаблона и ограничения прилагаю файлом.
Запустил под Бухгалтерия 2.0 на обычных формах — обработка не открывается, проверил на БГУ 1.0 также.
На Бухгалтерии 3.0 управляемые формы открывается.
Как запустить в Бухгалтерии 2.0?
(28) igor7702, Попробуйте в конфигураторе выставить «Использовать управляемые формы в обычном приложении»
условие препроцессора вычисляется передачей в запрос в конструкцию «ВЫБОР…КОГДА…ТОГДА…КОНЕЦ», что неправильно так как в запросе нельзя сравнивать поля несовместимых типов, а в инструкции препроцессора можно — в ряде случаев вычисление инструкции свалится
не разбирается возможность наличия в шаблоне именованных параметров (правда в типовых конфигурациях таких шаблонов вроде пока не видел) при наличии таковых обработка свалится
Приветствую, скачал обработку возможно бага возможно я что то недопонял строка 350
Текст = СтрЗаменить(Текст,»#ИмяТекущейТаблицы»,»»»»+ИмяТекущейТаблицы+»»»»);
У меня в шаблоне текст #ТекущаяТаблица соответсвенно замена не выполнилась.
Заменил руками получил такую строку ТекущаяТаблица ИЗ Контрагенты КАК ТекущаяТаблица
В консоли она понятно дело не сработала, консоль хочет слово Выбрать, как тут быть ?
(32) alekckuc, приведите весь текст шаблона и ограничения.
(33) обработка не открывается в конфигурации 1С ТОиР. 8,2, галка «Использовать управляемые формы в обычном приложении» стоит.
Не работает.
1С:ERP Управление предприятием 2.0.10.145
1С:Предприятие 8.3 (8.3.9.1818)
Невосстановимая ошибка
Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm:
по причине:
Ошибка SDBL:
Поле «,ВидыЦен,ВнешниеПользователи,ГруппыНоменклатуры,ГруппыПартнеров,ДополнительныеСведения,Кассы,КассыККМ,Подразделения,ПодразделенияОрганизаций,Пользователи,СоглашенияСКлиентамиИзменение,СоглашенияСКлиентамиЧтение,УчетныеЗаписиЭлектроннойПочты,ЭквайринговыеТерминалы,
,ВидыЦен,ВнешниеПользователи,ГруппыНоменклатуры,ГруппыПартнеров,ДополнительныеСведения,ЭквайринговыеТерминалы,
* * * * * *
(много чего про ВидыЦен)
* * * * * *
» имеет неограниченную длину и не может участвовать в сравнении.
И — вылетает платформа.
не работает
УТ 11.2 (11.2.3.108)
#ПоНаборамЗначений( «Документ.ТелефонныйЗвонок»,»»,»РасширенноеИЛИ»,»»)
{ВнешняяОбработка.ПроверкаШаблоновОграниченийRLS.Форма.Форма.Форма(341)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода
Выполнить(«РезультатВыполнения = «+НРег(СтрокаВыполнения));
по причине:
{(1,29)}: Ожидается выражение
РезультатВыполнения = найти(<<?>>&видыдоступасотключеннымиспользованием, «,пользователи,»)