Имя: Пароль:
1C
1С v8
Производительный режим RLS: Как настроить для разных ролей
0 alexshape
 
22.12.22
19:54
Добрый вечер, решаю задачи по Производительному RLS, и собственно возник вопрос, поэтому накидал абстрактную задачу, которая в принципе может возникнуть в работе, и как ее собственно решить на новом RLS
Есть документ "Тикет", для чтения этого документа есть две роли: "АдминистрированиеТикетов" и вторая "ВыполнениеТикетов", но для каждого свой RLS в стандартном режиме.
Сразу говорю, пример не рабочий, ошибки в синтаксисе могут быть, но для примера абстракции вполне сойдет.

Для роли: "АдминистрированиеТикетов" RLS  такой:

#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоЗначениямРасширенный("Документ.Тикет", "", "",
"",
"",
"Организации", "Т.Организация", "И",
"ВЫБОР КОГДА Вид = Значение(Перечисление.ВидыТикетов.Разработка) ТОГДА ИСТИНА", "ИНАЧЕ", "", "ТематикаТикетов",
"Т.Тематика", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")
#КонецЕсли

Для роли: "ВыполнениеТикетов" RLS  такой:

#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоЗначениям( "Документ._ДемоРасходныйКассовыйОрдер", "","",
"Организация", "Организация",
"ТематикаТикета", "Тематика",
"","",
"","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","")
#КонецЕсли


А вот и процедура для документа:

Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
    
    Ограничение.Текст =
    "РазрешитьЧтениеИзменение
    |ГДЕ
    |    ЗначениеРазрешено(Организация) И
    |    ВЫБОР
    |        КОГДА Вид = Значение(Перечисление.ВидыТикетов.Разработка) Тогда
    |            ИСТИНА
    |        Иначе
    |            ЗначениеРазрешено(Тематика)
    |    КОНЕЦ";
    
КонецПроцедуры

Внимание Вопрос: Как написать правильно процедуру "ПриЗаполненииОграниченияДоступа", чтобы он учитывал что для роли  "ВыполнениеТикетов" надо всегда проверять тематику на вхождение,
а для роли "АдминистрированиеТикетов" не всегда, только если это не разработка.
1 alexshape
 
22.12.22
19:55
Поправка:
Для роли: "ВыполнениеТикетов" RLS  такой:

#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоЗначениям( "Документ.Тикет", "","",
"Организация", "Организация",
"ТематикаТикета", "Тематика",
"","",
"","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","")
#КонецЕсли
2 magicSan
 
23.12.22
07:31
Всегда удивляла упоротость 1С с рлс. Вместо того чтоб резать права на уровне кластера, делают монструозные запросы к субд.
В итоге открытие документа 1-3 секунды, ведь надо проверить права! хотя в 95% случаях документ открывают для просмотра.

А оказываются есть люди тко это пользуют