Имя: Пароль:
1C
1С v8
Получить нижний уровень иерахического списка.
0 MAPATNK2
 
naïve
30.03.22
08:57
Всем доброго дня. Как получить нижний уровень иерархического списка 1 запросом?

Вот мой запрос:
1 MAPATNK2
 
naïve
30.03.22
08:57
ВЫБРАТЬ
    ПланСчетовУПП.Ссылка КАК Счет
ПОМЕСТИТЬ ВремТаблица
ИЗ
    ПланСчетов.Хозрасчетный.ВидыСубконто КАК ПланСчетовУПП
ГДЕ
    ПланСчетовУПП.ВидСубконто В (ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты), ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры))
    И НЕ ПланСчетовУПП.Ссылка.Родитель = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПустаяСсылка)

СГРУППИРОВАТЬ ПО
    ПланСчетовУПП.Ссылка

ИМЕЮЩИЕ
    СУММА(1) = 2
;
2 MAPATNK2
 
naïve
30.03.22
08:58
Но в случае, если у счета 70.01 есть подчиненный 70.01.01, то выведутся оба. А мне нужен только 70.01.01
3 MAPATNK2
 
naïve
30.03.22
09:00
Ну и соответственно, ели у счета 70.01 нет подчиненных объектов, то вывестись должен он.
4 Ненавижу 1С
 
гуру
30.03.22
09:02
бросьте вы это грязное дело
используйте косвенный признак:

НЕ ЗапретитьИспользоватьВПроводках
5 MAPATNK2
 
naïve
30.03.22
09:05
(4) В любом случае, это не поможет делу
6 MAPATNK2
 
naïve
30.03.22
09:10
Предполагаем, что есть только 3 уровня.70 ; 70.01; 70.01.01
7 Ненавижу 1С
 
гуру
30.03.22
09:12
(5)(6) это почему? ну есть три уровня, вам надо вывести я так понимаю "70.01.01" именно только он должен быть так НЕ помечен
8 Ненавижу 1С
 
гуру
30.03.22
09:13
но более правильно так:

ВЫБРАТЬ
    Хозрасчетный.Ссылка КАК Ссылка
ИЗ
    ПланСчетов.Хозрасчетный КАК Хозрасчетный
        ЛЕВОЕ СОЕДИНЕНИЕ ПланСчетов.Хозрасчетный КАК Хозрасчетный1
        ПО Хозрасчетный.Ссылка = Хозрасчетный1.Родитель
ГДЕ
    Хозрасчетный1.Ссылка ЕСТЬ NULL
9 MAPATNK2
 
naïve
30.03.22
09:19
(8) Спасибо большое.
10 MAPATNK2
 
naïve
30.03.22
09:22
(8) В таком случае "НЕ ЗапретитьИспользоватьВПроводках " использовать так же нет смысла
11 Мимохожий Однако
 
30.03.22
09:29
Счета без иерархии в запросе нужны?
12 MAPATNK2
 
naïve
30.03.22
09:39
(11) иерархия не нужна. нужны элементы нижних уровней. Но в (8) уже дали рабочий запрос.
13 MAPATNK2
 
naïve
30.03.22
10:01
(8) Кстати, запрос неверно отрабатывает например на 63 счете.
Если использовать вашу конструкцию НЕ ЗапретитьИспользоватьВПроводках, то он все равно будет выведен, т.к. он используется в проводках, но имеет верхний уровень.

Поэтому нужно использовать
И НЕ ПланСчетовУПП.Ссылка.Родитель = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ПустаяСсылка)
14 mikecool
 
30.03.22
10:57
(8) это же для 2го уровня счетов, не?
15 Ненавижу 1С
 
гуру
30.03.22
11:31
(13) в запросе (8) он отбирается
(14) для многоуровневого
2 + 2 = 3.9999999999999999999999999999999...