Проверка шаблонов ограничений (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 не будет опубликован. Обязательные поля помечены *