|
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.ВышестоящееПодразделение", "))", "","", "", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","") #КонецЕсли |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |