RLS доступ к группе номенклатуры

1. trismegist 09.10.12 14:40 Сейчас в теме
Приветствую всех!
Нужна помощь людей работавших с RLS. Желаемый эффект: ограничение видимости элементов справочника "номенклатура" по определенной группе.

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

Проверил запрос в консоли выдает то что нужно. В базе создал группу в которую входит пользователь с этой ролью, в регистр "Настройка прав доступа" добавил все группы из нужной группы. Но вопреки ожиданию я не увидел должного результата, где я допустил ошибку?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Buster 09.10.12 15:25 Сейчас в теме
Попробуй в справочнике поставить режим просмотра список. А то может ты установил право доступа на элемент внутри группы, на который не имеется доступ?
3. trismegist 09.10.12 15:29 Сейчас в теме
(2) Buster, дело в том что фильтрации вообще нет, я бы еще понял что что-то работает еслиб справочник закрылся совсем, а так как будто я и не делал ничего, виден весь справочник
4. Buster 09.10.12 15:38 Сейчас в теме
а зачем ты присоединяешь справочник Номенклатура во вложенном запросе? когда у тебя в объекте доступа уже всё есть?
5. Buster 09.10.12 15:47 Сейчас в теме
Я бы как-нибудь так сделал...
ТекущаяТаблица ИЗ ТекущаяТаблица КАК ТекущаяТаблица
ГДЕ ТекущаяТаблица.Ссылка В ИЕРАРХИИ
(ВЫБРАТЬ
НазначениеВидовОбъектовДоступа.ОбъектДоступа

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


Могут быть ошибки, т.к. без конструктора и без тестов
6. trismegist 09.10.12 16:06 Сейчас в теме
"В ИЕРАРХИИ" в RLS не работает
7. KapasMordorov 428 09.10.12 17:12 Сейчас в теме
В параметр сеанса собирать все группы, входящие в иерархию.
В RLS проверять родителя номенклатуры на вхождение в параметр сеанса.
8. trismegist 10.10.12 08:19 Сейчас в теме
(7) KapasMordorov, так вообще-то так и делается, данные о группах берутся из регистра, в консоли отбор работает, а в RLS отказывается, вываливает весь справочник
9. KapasMordorov 428 10.10.12 10:28 Сейчас в теме
(8)
Возможно, у пользователя несколько ролей, и в какой-то роли нет ограничения к справочнику номенклатуры.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот