Имя: Пароль:
1C
 
Оптимальный запрос по иерархии
0 DomenER
 
19.09.25
11:54
всем привет.

Есть регистр сведений содержащий перечень подразделений к которым должен иметь доступ пользователь. И в нём же есть признак доступа к подчинённым подразделениям

Подр1   :   A01 Иерарх:A01
--Подр2 :   A02 Иерарх:A01A02
----Подр3 :   A03 Иерарх:A01A02A03

В регистре доступа прописано сотруднику Подр2 и ДоступИерархии "Да"
Сотрудник имеет доступ к Подр2 с иерархией подразделений ниже, т.е. к подразделениям A02 и A03

Как в запросе выбрать перечень подразделений к которым есть доступ?
1 aka MIK
 
19.09.25
11:57
Родитель.Родитель.Родитель
2 Волшебник
 
19.09.25
11:58
ВЫБРАТЬ Ссылка
ИЗ Справочник.Подразделения
ГДЕ Ссылка В ИЕРАРХИИ(ВЫБРАТЬ Подр Из РегистрСведений.ДоступныеПодразделения ГДЕ Сотр = &Сотр И ДоступИерархии)
ИЛИ Ссылка В (ВЫБРАТЬ Подр Из РегистрСведений.ДоступныеПодразделения ГДЕ Сотр = &Сотр И НЕ ДоступИерархии)
3 DomenER
 
19.09.25
11:58
Спасибо. попробую
4 aka MIK
 
19.09.25
12:02
В реальных задачах надо выбирать подразделения в соединении, а там В ИЕРАРХИИ не сработает.

Иначе задача совсем не интересная
5 Волшебник
 
19.09.25
12:43
Правильнее настроить RLS и тогда запрос будет тривиальный
ВЫБРАТЬ РАЗРЕШЕННЫЕ Ссылка
ИЗ Справочник.Подразделения
6 DomenER
 
19.09.25
13:02
(5) Так и планируется. В модуле сеанса определить подразделения в фиксированный массив, а в правах RLS прописать в запросе ПодразделениеСсылка В (&МойПараметрСеанса)
7 Волшебник
 
19.09.25
13:21
(6) Грамотно.