|
|
|
RLS на журнал документов. С условием | ☑ | ||
|---|---|---|---|---|
|
0
Wefast
04.09.24
✎
11:22
|
Необходимо настроить RLS по подразделениям в ЗУП 3.1
Но не только в штатном расписание, а во всей конфе. Наткнулся на журнал документов ПриемыПереводыУвольнения. В нем куча документов, где то Подразделение в шапке документа, где то в табличной части, где то нигде нет. И в самом журнале подразделения нет Т.е. мне нужно сделать соединение с таблицей, но разными Типовое ограничение на справочнике ШтатноеРасписание выглядит так: #Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоЗначениямРасширенный( "Справочник.ШтатноеРасписание","Чтение","",
"ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПодчиненностьПодразделенийОрганизаций КАК Т2
ПО Т2.Подразделение = Т.Подразделение",
"",
"ПодразделенияОрганизаций","Т2.ВышестоящееПодразделение","И",
"Организации","Т.Владелец","",
"","","","","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","" )
#КонецЕсли
Типовое ограничение в журнале документов выглядит так: #Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("Ссылка")
#Иначе
#ПоЗначениямРасширенный( "ЖурналДокументов.ПриемыПереводыУвольнения", "Чтение","","",
"НЕ Ложь В (Выбрать Первые 1 Ложь Из РегистрСведений.ФизическиеЛицаДокументов КАК Т1 ГДЕ Т.Ссылка = Т1.ДокументФизическогоЛица И НЕ (","ГруппыФизическихЛиц", "Т1.ФизическоеЛицо", ")) И ","Организации","Т.Организация", "","","", "", "","", "", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли
Собственно на данный момент нужно на те документы где есть Подразделение - наложить РЛС, а где нет подразделения - не накладывать. Пока сделал, что то такое: #Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("Ссылка")
#Иначе
#ПоЗначениямРасширенный( "ЖурналДокументов.ПриемыПереводыУвольнения", "Чтение","",
"ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуСписком.Сотрудники как ПРС
ПО выразить(Т.Ссылка КАК Документ.ПриемНаРаботуСписком) = ПРС.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.КадровыйПереводСписком.Сотрудники как КПС
ПО выразить(Т.Ссылка КАК Документ.КадровыйПереводСписком) = КПС.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.УвольнениеСписком.Начисления как УС
ПО выразить(Т.Ссылка КАК Документ.УвольнениеСписком) = УС.Ссылка
Левое СОЕДИНЕНИЕ РегистрСведений.ПодчиненностьПодразделенийОрганизаций КАК Т1
ПО Т1.Подразделение = Выразить(Т.Ссылка КАК Документ.ПриемНаРаботу).Подразделение
ИЛИ Т1.Подразделение = Выразить(Т.Ссылка КАК Документ.КадровыйПеревод).Подразделение
ИЛИ Т1.Подразделение = Выразить(Т.Ссылка КАК Документ.ПеремещениеВДругоеПодразделение).ПодразделениеПрежнее
ИЛИ Т1.Подразделение = Выразить(Т.Ссылка КАК Документ.ПеремещениеВДругоеПодразделение).ПодразделениеНовое
ИЛИ Т1.Подразделение = Выразить(Т.Ссылка КАК Документ.ВосстановлениеВДолжности).Подразделение
ИЛИ Т1.Подразделение = Выразить(Т.Ссылка КАК Документ.ИзменениеГрафикаРаботыСписком).Подразделение
ИЛИ Т1.Подразделение = ПРС.Подразделение
ИЛИ Т1.Подразделение = КПС.Подразделение
ИЛИ Т1.Подразделение = УС.Подразделение",
"НЕ Ложь В (Выбрать Первые 1 Ложь Из РегистрСведений.ФизическиеЛицаДокументов КАК Т1 ГДЕ Т.Ссылка = Т1.ДокументФизическогоЛица И НЕ (","ГруппыФизическихЛиц", "Т1.ФизическоеЛицо", ")) И ","Организации","Т.Организация", "И","ПодразделенияОрганизаций","Т1.ВышестоящееПодразделение", "", "","", "", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли
Не понимаю как прочитать вот эту строку: "НЕ Ложь В (Выбрать Первые 1 Ложь Из РегистрСведений.ФизическиеЛицаДокументов КАК Т1 ГДЕ Т.Ссылка = Т1.ДокументФизическогоЛица И НЕ (","ГруппыФизическихЛиц", "Т1.ФизическоеЛицо", "))
Будто бы это как раз подобное условие, но для рлс по физ лицам. Т.е. мне нужно наверное вместо "ПодразделенияОрганизаций","Т2.ВышестоящееПодразделение" написать что то вроде: "Выбор Когда НЕ Т.Ссылка Ссылка Документ.ДокументБезПОдразделения Тогда Ложь Иначе Истина Конец И НЕ (",""ПодразделенияОрганизаций","Т2.ВышестоящееПодразделение",))
или "Выбор Когда НЕ Т.Ссылка.Подразделение Есть NULL Тогда Ложь Иначе Истина Конец И НЕ (",""ПодразделенияОрганизаций","Т2.ВышестоящееПодразделение",))
P.S. при написанном мной варианте список документов формируется долго. И в принципе задача выглядит недееспособной. Но сказали копать - буду пока копать. |
|||
|
1
Волшебник
04.09.24
✎
11:23
|
Задача не может быть "недееспособной". Это человек может быть недееспособным
|
|||
|
2
ЕRPe
04.09.24
✎
11:27
|
как вариант упростить себе жизнь вспомогательным регистром сведений и подпиской.
|
|||
|
3
Wefast
04.09.24
✎
12:05
|
(2) мне бы подсказать как именно нужное условие добавить.
|
|||
|
4
Wefast
04.09.24
✎
12:20
|
Сделал так, вроде работает как нужно:
#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("Ссылка")
#Иначе
#ПоЗначениямРасширенный( "ЖурналДокументов.ПриемыПереводыУвольнения", "Чтение","",
"ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботуСписком.Сотрудники как ПРС
ПО выразить(Т.Ссылка КАК Документ.ПриемНаРаботуСписком) = ПРС.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.КадровыйПереводСписком.Сотрудники как КПС
ПО выразить(Т.Ссылка КАК Документ.КадровыйПереводСписком) = КПС.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ Документ.УвольнениеСписком.Начисления как УС
ПО выразить(Т.Ссылка КАК Документ.УвольнениеСписком) = УС.Ссылка
Левое СОЕДИНЕНИЕ РегистрСведений.ПодчиненностьПодразделенийОрганизаций КАК Т1
ПО Т1.Подразделение = Выразить(Т.Ссылка КАК Документ.ПриемНаРаботу).Подразделение
ИЛИ Т1.Подразделение = Выразить(Т.Ссылка КАК Документ.КадровыйПеревод).Подразделение
ИЛИ Т1.Подразделение = Выразить(Т.Ссылка КАК Документ.ПеремещениеВДругоеПодразделение).ПодразделениеПрежнее
ИЛИ Т1.Подразделение = Выразить(Т.Ссылка КАК Документ.ПеремещениеВДругоеПодразделение).ПодразделениеНовое
ИЛИ Т1.Подразделение = Выразить(Т.Ссылка КАК Документ.ВосстановлениеВДолжности).Подразделение
ИЛИ Т1.Подразделение = Выразить(Т.Ссылка КАК Документ.ИзменениеГрафикаРаботыСписком).Подразделение
ИЛИ Т1.Подразделение = ПРС.Подразделение
ИЛИ Т1.Подразделение = КПС.Подразделение
ИЛИ Т1.Подразделение = УС.Подразделение",
"НЕ Ложь В (Выбрать Первые 1 Ложь Из РегистрСведений.ФизическиеЛицаДокументов КАК Т1 ГДЕ Т.Ссылка = Т1.ДокументФизическогоЛица И НЕ (","ГруппыФизическихЛиц", "Т1.ФизическоеЛицо", ")) И ","Организации","Т.Организация",
"И ((Выбор Когда Т.Ссылка ССылка Документ.Увольнение ИЛИ Т.Ссылка Ссылка Документ.ОтпускПоУходуЗаРебенком или Т.ССылка Ссылка Документ.ИзменениеУсловийОплатыОтпускаПоУходуЗаРебенком
или Т.ССылка Ссылка Документ.ВозвратИзОтпускаПоУходуЗаРебенком
или Т.ССылка Ссылка Документ.ПеремещениеМеждуТерриториями Тогда Истина Иначе Ложь Конец) ИЛИ (","ПодразделенияОрганизаций","Т1.ВышестоящееПодразделение", "))", "","", "", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |