|
Проблема с RLS | ☑ | ||
---|---|---|---|---|
0
Dobby_Voy
30.09.11
✎
12:30
|
Здравствуйте, осваиваю RLS, столкнулся с такой проблемой: есть справочник "Договоры контрагентов", у него на чтения у роли "Пользователь" стоит след типовой шаблон:
#Если &ИспользоватьОграничениеПоКонтрагенты ИЛИ &ИспользоватьОграничениеПоОрганизации #Тогда ТекущаяТаблица ИЗ Справочник.ДоговорыКонтрагентов КАК ТекущаяТаблица ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ СоставГруппы.Ссылка КАК ГруппаПользователей ИЗ Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы ГДЕ СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей ПО (ИСТИНА) ГДЕ НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL И НЕ ТекущаяТаблица.Организация ЕСТЬ NULL И (НЕ 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты ПО Контрагенты.Ссылка = ТекущаяТаблица.Владелец #КонецЕсли ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей ПО НастройкиПравДоступаПользователей.ОбъектДоступа = ВЫБОР #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты) ТОГДА ЕСТЬNULL(Контрагенты.ГруппаДоступаКонтрагента, ЗНАЧЕНИЕ(Справочник.ГруппыДоступаКонтрагентов.ПустаяСсылка)) #КонецЕсли #Если &ИспользоватьОграничениеПоОрганизации #Тогда КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации) ТОГДА ЕСТЬNULL(ТекущаяТаблица.Организация, ЗНАЧЕНИЕ(Справочник.Организации.ВяткаМед)) #КонецЕсли КОНЕЦ И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа И #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда ВЫБОР КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты) ТОГДА НастройкиПравДоступаПользователей.ОбластьДанных В (ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.КонтрагентыДопИнформация), ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.КонтрагентыДанные)) ИНАЧЕ НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка) КОНЕЦ #Иначе НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка) #КонецЕсли И НастройкиПравДоступаПользователей.Пользователь = ГруппыПользователей.ГруппаПользователей ГДЕ НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей И НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа В ( ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ПустаяСсылка) #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда , ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты) #КонецЕсли #Если &ИспользоватьОграничениеПоОрганизации #Тогда , ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации) #КонецЕсли ) И НастройкиПравДоступаПользователей.ОбъектДоступа ЕСТЬ NULL)) #КонецЕсли у нас в нем иерархия с группами, то есть храним договоры в папочках для удобства. После ограничения доступа к организациям, группы перестали выходить. я так понимаю потому что у договора есть организация, она проверяется на вхождение, а у группы организации нет, и выходит пустое значение и они не высвечиваются, ума не приложу как сделать что б папки не учавствовали в этом шаблоне, подскажите плиз. |
|||
1
Dobby_Voy
30.09.11
✎
12:31
|
#Если &ИспользоватьОграничениеПоКонтрагенты ИЛИ &ИспользоватьОграничениеПоОрганизации #Тогда
ТекущаяТаблица ИЗ Справочник.ДоговорыКонтрагентов КАК ТекущаяТаблица ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ + Code СоставГруппы.Ссылка КАК ГруппаПользователей ИЗ Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы ГДЕ СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей ПО (ИСТИНА) ГДЕ НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL И (НЕ 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты ПО Контрагенты.Ссылка = ТекущаяТаблица.Владелец #КонецЕсли ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей ПО НастройкиПравДоступаПользователей.ОбъектДоступа = ВЫБОР #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты) ТОГДА ЕСТЬNULL(Контрагенты.ГруппаДоступаКонтрагента, ЗНАЧЕНИЕ(Справочник.ГруппыДоступаКонтрагентов.ПустаяСсылка)) #КонецЕсли #Если &ИспользоватьОграничениеПоОрганизации #Тогда КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации) ТОГДА ЕСТЬNULL(ТекущаяТаблица.Организация, ЗНАЧЕНИЕ(Справочник.Организации.ВяткаМед)) #КонецЕсли КОНЕЦ И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа И #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда ВЫБОР КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты) ТОГДА НастройкиПравДоступаПользователей.ОбластьДанных В (ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.КонтрагентыДопИнформация), ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.КонтрагентыДанные)) ИНАЧЕ НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка) КОНЕЦ #Иначе НастройкиПравДоступаПользователей.ОбластьДанных = ЗНАЧЕНИЕ(Перечисление.ОбластиДанныхОбъектовДоступа.ПустаяСсылка) #КонецЕсли И НастройкиПравДоступаПользователей.Пользователь = ГруппыПользователей.ГруппаПользователей ГДЕ НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей И НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа В ( ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.ПустаяСсылка) #Если &ИспользоватьОграничениеПоКонтрагенты #Тогда , ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты) #КонецЕсли #Если &ИспользоватьОграничениеПоОрганизации #Тогда , ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации) #КонецЕсли ) И НастройкиПравДоступаПользователей.ОбъектДоступа ЕСТЬ NULL)) #КонецЕсли |
|||
2
Dobby_Voy
30.09.11
✎
12:32
|
точнее так )
|
|||
3
asady
30.09.11
✎
12:32
|
(0) тупо при выборе в списке отключайте иерархический режим просмотра и всё увидишь
|
|||
4
Dobby_Voy
30.09.11
✎
12:33
|
мне они тоже не нужны, юзверам нужны
|
|||
5
ДемонМаксвелла
30.09.11
✎
14:10
|
Добавь ещё одну роль, и в ней чтение групп договоров дай всем
|
|||
6
n0ther
30.09.11
✎
14:20
|
(0) сделали так
#Если &ИспользоватьОграничениеПоКонтрагенты ИЛИ &ИспользоватьОграничениеПоОрганизации #Тогда ТекущаяТаблица ИЗ Справочник.ДоговорыКонтрагентов КАК ТекущаяТаблица ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ СоставГруппы.Ссылка КАК ГруппаПользователей ИЗ Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы ГДЕ СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей ПО (ИСТИНА) ГДЕ ТекущаяТаблица.ЭтоГруппа ИЛИ НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL и т.д. по списку |
|||
7
Рыжий Лис
30.09.11
✎
14:44
|
(0) Можно просто дать всем права на пустую организацию.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |