Имя: Пароль:
1C
1С v8
Помогте с запросом - соединение по вхождению в иерархию
0 Puzoter
 
05.01.16
15:32
Есть РС в котором перечислены подразделения. Задача - отобрать в РС  только те подразделения, которые находятся в иерархии любого из перечисленных подразделений. Например в РС три записи:
Подразделение 1, подразделение 2 и подразделение 3. Подразделение 3 находится в иерархии подразделения 1, соответственно нужно выбрать только его.
1 Nuobu
 
05.01.16
15:43
(0) ГДЕ Подразделение.Родитель <> Значение(Справочник.Подразделения.ПустаяСсылка)

Так подойдёт?
2 Puzoter
 
05.01.16
15:46
(1) Нет, подразделения могут иметь любой уровень вложенности
3 Nuobu
 
05.01.16
15:48
(2) А тебе нужна только иерархия подразделений, которые уже есть в РС?
4 Puzoter
 
05.01.16
15:57
(3) Да.
5 Nuobu
 
05.01.16
16:01
(4) Тогда через выбор когда:

ГДЕ
Выбор Когда Подразделение.Родитель В (вЫбрать П.Подразделение из ВТРегистр КАК П) Тогда Истина
Когда Подразделение.Родитель.Родитель В (вЫбрать П.Подразделение из ВТРегистр КАК П) Тогда Истина
Когда Подразделение.Родитель.Родитель.Родитель В (вЫбрать П.Подразделение из ВТРегистр КАК П) Тогда Истина
Иначе Ложь Конец

Ну и столько нужно раз повторить, сколько там уровней вложенности.
6 GreyK
 
05.01.16
16:07
Перефразируем (1)
ГДЕ Подразделение.Родитель в ПеречисленныеПодразделения
7 RomanYS
 
05.01.16
16:08
в иерархии нельзя использовать в соединениях, а в условиях можно

ВЫБРАТЬ
    Спр.Ссылка
ИЗ
    Справочник.ТвойСправочник КАК Спр
ГДЕ
    Спр.Ссылка В ИЕРАРХИИ
            (ВЫБРАТЬ ПЕРВЫЕ 1
                РС.Подразделение
            ИЗ
                РегистрСведений.ТвойРС КАК РС)
8 Nuobu
 
05.01.16
16:11
(7) Да? неожиданно, буду знать.
9 RomanYS
 
05.01.16
16:14
(8) ДА!
*(7) "ПЕРВЫЕ 1" там лишнее, работает и без этого