Имя: Пароль:
1C
 
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.ВышестоящееПодразделение", "))", "","", "", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли