Проверка шаблонов ограничений (RLS для 1С 8.2-8.3)


Теперь, чтобы получить конечный запрос на таблицу, которую пользователь сможет получить после отработки RLS ограничений, вам ничего не надо придумывать.

Все вы, наверное знакомы с RLS (ограничения на уровне записей), но не многие смогут с лёгкостью написать свой шаблон и ограничения по нему, а тем более разобраться в чужих.

Эта обработка позволяет ввести текст шаблона ограничения и текст ограничения доступа для определённой таблицы и на выходе получить готовый запрос и его параметры, который в последствии легко отладить в такой обработке, как «Консоль запросов».

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

 

Исправлено:

  • Указывается #ИмяТекущейТаблицы, #ИмяТекущегоПраваДоступа
  • Выполняется инструкция СтрСодержит()

Выявленные ошибки:

  • Пока таковых нет

36 Comments

  1. ivanov660

    Скачал обработку. Запустил в демо базе бухгалтерии. И НЕ РАБОТАЕТ.

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

    К недостаткам могу отнести отсутствие в примере хотя бы краткой инструкции, и возможно добавления некого упрощенного варианта консоли запросов для проверки результата на месте.

    upd. Решил попробовать на другой конфигурации (УТ) — вроде отработало. Поэтому делаю вывод, что данная обработка работоспособна не для всех версий и конфигураций. Предлагаю автору, все же доработать ее, либо описать ограничения, чтобы не вводить в заблуждение пользователей.

    Reply
  2. frutty

    Подскажите в какой именно конфигурации вы запускали и под каким пользователем, а также что именно вводили.

    Я не претендую на ультра правильное решение этой задачи, делал обработку для себя и она мне помогла в моих проблемах. Развивать дальше планирую по мере потребностей, с консолью конечно удобнее, но проще совместить её с более продвинутой версией.

    Reply
  3. bird21

    Возьмем обработку на заметку, сейчас не актуально, но бывало нужно было.

    Reply
  4. DAnry

    На мой взгляд такие вещи не стоит доверять автоматике. Занимался этим вопросом, сам писал шаблоны ограничений RLS. Тут как говорится «Семь раз отмерь, один — отрежь». Очень аккуратно надо. Поэтому совет: САМОМУ разобраться в механизме RLS и запросах ограничений (можно воспользоваться готовыми шаблонами, но обязательно разобрать их по косточкам), на основе готовых написать свои, и тестировать, тестировать, тестировать (под разными пользователями и с разными настройками)

    Reply
  5. frutty

    (4) DAnry, Собственно тут и нет никакой автоматики, это всего лишь свёртываение шаблона до обыкновенного запроса, чтобы легче было видеть ошибки.

    Reply
  6. kser87

    Было бы неплохо сделать обратное преобразование: из запроса 1С в текст ограничения.

    Ну и результат запроса можно прямо в обработку выводить.

    инструкции предпроцессору обрабатываются? если да, то как? имею в виду такую конструкцию #Если #Иначе #КонецЕсли

    Reply
  7. kser87

    Конечно, обработка очень далека от совершенства

    Reply
  8. frutty

    (6) kser87, #ЕСЛИ #ТОГДА #ИНАЧЕЕСЛИ #ИНАЧЕ #КОНЕЦЕСЛИ — обрабатываются, именно для этого и делал.

    Reply
  9. AllexSoft

    хорошая штука, а то со стороны платформы для RLS ни сделано ничего ( даже отбора метаданных по ролям нету, не говоря уж об отладке RLS или конструкторе шаблонов

    Reply
  10. nixel

    Надеюсь, будет доработано под свежие версии БСП. Подписался.

    Reply
  11. Gendalf_beliy

    Возьму обработку на заметку, сейчас не актуально, но бывало нужно было.

    Спасибо.

    Reply
  12. nixel

    (6) kser87, что в этом сложного?

    Текст ограничения — это и есть текст запроса. Просто без «ВЫБРАТЬ», без явного указания одной таблицы и без кучи возможностей обычного запроса.

    Каким образом вы захотите это инструкциями препроцессору разбавить, ни одна обработка не знает. А отсутствующие возможности — ну будет она ругаться, что у вас «ПОМЕСТИТЬ» в запросе. Толку-то от этого? все равно руками разбирать.

    Reply
  13. o.nikolaev

    1. Хотелось бы видеть более подробную инструкцию и простой пример

    2. Нет возможности сохранять настройки, идеально — навигация по сохраненным настройкам — это видимо уже следующий уровень — среда разработки для RLS.

    3. Возможность выполнения сформированного запроса с заданными параметрами

    Reply
  14. vital1c

    спасибо, обработка помогла разобраться с некоторыми шаблонами ут11

    Reply
  15. EvilDoc

    я для этих целей просто консоль запросов использую. Не понимаю пользы этой обработки

    Reply
  16. EvilDoc

    Ручками несколько буквочек тыкнуть — превратить шаблон в запрос — если человек этого не может то ему ни какая обработка не поможет

    Reply
  17. DISAoner

    Под УПП (обычное приложение) не запустилась…

    Reply
  18. artbear

    Очень полезная обработка.

    Без нее слишком много буковок в обычных консолях придется переделывать.

    (17) Попробуй запрос БСП получить в консоли запросов и засеки время.

    Reply
  19. frutty

    (19)DISAoner, какой-то маленький у вас шаблон =)

    Хотел вставить шаблон из УТ11, но нарвался на это:

    Reply
  20. DISAoner
    Reply
  21. EvilDoc

    (20) Да, в новых конфах РЛС вообще клевый))

    Reply
  22. DISAoner

    (20) дело в том, что он не мой и я хотел бы его разобрать при помощи данной обработки, но она не открывается. При попытке открыть файл ничего не происходит((

    Reply
  23. frutty

    (22) DISAoner, Создайте пустую конфигурацию с управляемым интерфейсом и откройте мою обработку, должно сработать.

    Reply
  24. Makushimo

    на УТ 11 не работает

    СтрСодержит() в выражении для Вычислить() под УФ(толстый клиент) идет по ветке Исключение

    то есть не отрабатывает

    запускаю туже конфу под обычными формами (толстый клиент) вычисляет без проблем

    почему так?

    Reply
  25. frutty

    (25) Makushimo, Что-то я вас совсем не понял, подробнее пожалуйста и желательно с примерами.

    Reply
  26. herfis

    Не работает (результат пустой).

    Тексты шаблона и ограничения прилагаю файлом.

    Reply
  27. igor7702

    Запустил под Бухгалтерия 2.0 на обычных формах — обработка не открывается, проверил на БГУ 1.0 также.

    На Бухгалтерии 3.0 управляемые формы открывается.

    Как запустить в Бухгалтерии 2.0?

    Reply
  28. frutty

    (28) igor7702, Попробуйте в конфигураторе выставить «Использовать управляемые формы в обычном приложении»

    Reply
  29. Rioneri

    условие препроцессора вычисляется передачей в запрос в конструкцию «ВЫБОР…КОГДА…ТОГДА…КОНЕЦ», что неправильно так как в запросе нельзя сравнивать поля несовместимых типов, а в инструкции препроцессора можно — в ряде случаев вычисление инструкции свалится

    Reply
  30. Rioneri

    не разбирается возможность наличия в шаблоне именованных параметров (правда в типовых конфигурациях таких шаблонов вроде пока не видел) при наличии таковых обработка свалится

    Reply
  31. alekckuc

    Приветствую, скачал обработку возможно бага возможно я что то недопонял строка 350

    Текст = СтрЗаменить(Текст,»#ИмяТекущейТаблицы»,»»»»+ИмяТекущейТаблицы+»»»»);

    У меня в шаблоне текст #ТекущаяТаблица соответсвенно замена не выполнилась.

    Заменил руками получил такую строку ТекущаяТаблица ИЗ Контрагенты КАК ТекущаяТаблица

    В консоли она понятно дело не сработала, консоль хочет слово Выбрать, как тут быть ?

    Reply
  32. frutty

    (32) alekckuc, приведите весь текст шаблона и ограничения.

    Reply
  33. Чародей

    (33) обработка не открывается в конфигурации 1С ТОиР. 8,2, галка «Использовать управляемые формы в обычном приложении» стоит.

    Reply
  34. babys
    Reply
  35. openmind

    Не работает.

    1С:ERP Управление предприятием 2.0.10.145

    1С:Предприятие 8.3 (8.3.9.1818)

    Невосстановимая ошибка

    Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm:

    по причине:

    Ошибка SDBL:

    Поле «,ВидыЦен,ВнешниеПользователи,ГруппыНоменклатуры,ГруппыПартнеров,ДополнительныеСведения,Кассы,КассыККМ,Подразделения,ПодразделенияОрганизаций,Пользователи,СоглашенияСКлиентамиИзменение,СоглашенияСКлиентамиЧтение,УчетныеЗаписиЭлектроннойПочты,ЭквайринговыеТерминалы,

    ,ВидыЦен,ВнешниеПользователи,ГруппыНоменклатуры,ГруппыПартнеров,ДополнительныеСведения,ЭквайринговыеТерминалы,

    * * * * * *

    (много чего про ВидыЦен)

    * * * * * *

    » имеет неограниченную длину и не может участвовать в сравнении.

    И — вылетает платформа.

    Reply
  36. ilya005

    не работает

    УТ 11.2 (11.2.3.108)

    #ПоНаборамЗначений( «Документ.ТелефонныйЗвонок»,»»,»РасширенноеИЛИ»,»»)

    {ВнешняяОбработка.ПроверкаШаблоновОграниченийRLS.Форма.Форма.Форма(341)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода

    Выполнить(«РезультатВыполнения = «+НРег(СтрокаВыполнения));

    по причине:

    {(1,29)}: Ожидается выражение

    РезультатВыполнения = найти(<<?>>&видыдоступасотключеннымиспользованием, «,пользователи,»)

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *