|
Как получить родителя первого уровня элемента справочника ДоговорыКонтрагентов в консоли | ☑ | ||
---|---|---|---|---|
0
ladah61669
13.10.22
✎
17:28
|
Как получить родителя первого уровня элемента справочника ДоговорыКонтрагентов в консоли запросов?
|
|||
1
ladah61669
13.10.22
✎
17:31
|
Например имеются два элемента
1. Доп.соглашение к дог.1(Договор1) 2. Доп.соглашение к субдог.2(СубДоговор2)(Договор2) Как получить Договор1 и Договор2? |
|||
2
mistеr
13.10.22
✎
18:39
|
Один из тех немногих случаев, когда за запрос в цикле по рукам не бьют. :)
|
|||
3
mistеr
13.10.22
✎
18:40
|
Другой способ — итоги по иерархии.
|
|||
4
Philix
13.10.22
✎
18:59
|
Еще можно уболтать заказчика на ограничение количества уровней иерархии. После этого задача становится решаемой путем конечного количества вложений конструкций типа Выбор Когда Договор.Родитель is null тогда Договор когда Договор.Родитель.Родитель is null Тогда Договор.Родитель
Но за разименовывание полей через несколько точек тоже могут применить линейку к конечностям. :) |
|||
5
ladah61669
13.10.22
✎
19:01
|
(2) Есть доступ только к консоли запросов, а там циклы не получиться использовать...
|
|||
6
ladah61669
13.10.22
✎
19:02
|
(4) Нашел такой способ, однако через такой конструкцию (ВЫБОР) возвращает пустоту...
ВЫБРАТЬ ДоговорыКонтрагентов.Ссылка КАК ДоговорыКонтрагентов, ВЫБОР КОГДА ДоговорыКонтрагентов.Родитель ЕСТЬ NULL ТОГДА ДоговорыКонтрагентов.Ссылка КОГДА ДоговорыКонтрагентов.Родитель.Родитель ЕСТЬ NULL ТОГДА ДоговорыКонтрагентов.Родитель.Ссылка КОГДА ДоговорыКонтрагентов.Родитель.Родитель.Родитель ЕСТЬ NULL ТОГДА ДоговорыКонтрагентов.Родитель.Родитель.Ссылка КОГДА ДоговорыКонтрагентов.Родитель.Родитель.Родитель.Родитель ЕСТЬ NULL ТОГДА ДоговорыКонтрагентов.Родитель.Родитель.Родитель.Ссылка КОГДА ДоговорыКонтрагентов.Родитель.Родитель.Родитель.Родитель.Родитель ЕСТЬ NULL ТОГДА ДоговорыКонтрагентов.Родитель.Родитель.Родитель.Родитель.Ссылка ИНАЧЕ "УПС" КОНЕЦ КАК Поле222, ДоговорыКонтрагентов.Ссылка, ДоговорыКонтрагентов.Родитель.Ссылка, ДоговорыКонтрагентов.Родитель.Родитель.Ссылка, ДоговорыКонтрагентов.Родитель.Родитель.Родитель.Ссылка, ДоговорыКонтрагентов.Родитель.Родитель.Родитель.Родитель.Ссылка ИЗ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов ГДЕ ДоговорыКонтрагентов.Код В ("000048390", "000048915", "000036747") |
|||
7
Philix
13.10.22
✎
19:38
|
(6) Я чутка ступил. У любого элемента иерархического справочника есть Родитель и он не null, а пустая ссылка соответствующего вида. Как следствие сравнивать надо не is null, а со ЗНАЧЕНИЕ(Справочник.Договорыконтрагентов.ПустаяСсылка) и все работает.
примерно так: ВЫБРАТЬ ДоговорыКонтрагентов.Ссылка КАК Ссылка, ВЫБОР КОГДА ДоговорыКонтрагентов.Родитель = ЗНАЧЕНИЕ(Справочник.Договорыконтрагентов.ПустаяСсылка) ТОГДА ДоговорыКонтрагентов.Ссылка КОГДА ДоговорыКонтрагентов.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Договорыконтрагентов.ПустаяСсылка) ТОГДА ДоговорыКонтрагентов.Родитель КОГДА ДоговорыКонтрагентов.Родитель.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Договорыконтрагентов.ПустаяСсылка) ТОГДА ДоговорыКонтрагентов.Родитель.Родитель КОНЕЦ КАК Родитель1Уровня ИЗ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов |
|||
8
FIXXXL
13.10.22
✎
19:56
|
(5) используй консоль с постобработкой результата запроса
|
|||
9
ladah61669
14.10.22
✎
09:59
|
(8) Это как
|
|||
10
ladah61669
14.10.22
✎
10:37
|
(7) Спасибо Philix, выручил. Все получилось.
|
|||
11
lexushka
14.10.22
✎
11:59
|
я делал новый регистр и при записи рекурсией помешал нужное мне значение в него
в запросе (7) это до тех пор пока уровень вложенности ожидаемый, а станет больше и привет |
|||
12
АнализДанных
14.10.22
✎
16:17
|
(0) Самый производительный и правильный способ - это использовать транзитивное замыкание. Здесь есть хорошее описание и код: https://infostart.ru/1c/articles/158512/
Из минусов сложнее код получается. Альтернативный вариант указан в (7) |
|||
13
FIXXXL
14.10.22
✎
18:24
|
(9) поищи, консолей много разных :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |