Имя: Пароль:
1C
 
Обход иерархического справочника в запросе
,
0 gul_Sayan
 
28.02.24
06:14
Нужно получить значение доп реквизита справочника причем не только самого но и его родителей. Обращение через точку, а тем более несколько не приветствуется, не подскажите как лучше организовать запрос?
Попробовал получать доп. реквизиты обработкой, но тоже очень медленно.
1 steep1
 
28.02.24
07:44
(0) Сколько уровней вложенности ?
2 gul_Sayan
 
28.02.24
07:50
(1)7-9
3 gul_Sayan
 
28.02.24
07:51
(1)правда может быть и 1-2 уровень. но до 9ти.
4 Волшебник
 
28.02.24
07:51
(0) Обращайтесь через точку.
5 Смотрящий
 
28.02.24
08:04
https://infostart.ru/1c/articles/158512/
Читани. Работает.
6 gul_Sayan
 
28.02.24
08:17
(5) Спасибо.
7 Одинист
 
28.02.24
09:06
Если подглядеть как у 1С сделано:

    Запрос = Новый Запрос;
    ТекстЗапроса =
    "ВЫБРАТЬ
    |    Справочник1.Ссылка КАК Элемент,
    |    Справочник1.Родитель КАК Родитель1,
    |    Справочник2.Родитель КАК Родитель2,
    |    Справочник3.Родитель КАК Родитель3,
    |    Справочник4.Родитель КАК Родитель4,
    |    Справочник5.Родитель КАК Родитель5
    |ИЗ
    |    Справочник.Номенклатура КАК Справочник1
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Справочник2
    |        ПО (Справочник2.Ссылка = Справочник1.Родитель)
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Справочник3
    |        ПО (Справочник3.Ссылка = Справочник2.Родитель)
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Справочник4
    |        ПО (Справочник4.Ссылка = Справочник3.Родитель)
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Справочник5
    |        ПО (Справочник5.Ссылка = Справочник4.Родитель)
    |ГДЕ
    |    Справочник1.Ссылка В(&МассивСсылок)";
8 Волшебник
 
28.02.24
09:08
(7) Ужасный программный код. Лучше так

ВЫБРАТЬ
        Спр.Ссылка КАК Элемент,
        Спр.Родитель КАК Родитель1,
        Спр.Родитель.Родитель КАК Родитель2,
        Спр.Родитель.Родитель.Родитель КАК Родитель3,
        Спр.Родитель.Родитель.Родитель.Родитель КАК Родитель4,
        Спр.Родитель.Родитель.Родитель.Родитель.Родитель КАК Родитель5
    ИЗ
        Справочник.Номенклатура КАК Спр
9 Волшебник
 
28.02.24
09:09
А ещё можно сделать
ИТОГИ ПО поле ИЕРАРХИЯ


он соберёт всех родителей
10 Одинист
 
28.02.24
09:09
(8) > Ужасный программный код.

11 Волшебник
 
28.02.24
09:10
(10) и чо?
12 lodger
 
28.02.24
09:41
(0) пиши 2 отдельных запроса.
первый выводит ИТОГИ ПО ИЕРАРХИЯ, обходишь, собираешь ссылки в одну колонку.
второй к этим итогам приделывает левый джойн твоей таблицы. готово.
13 Ненавижу 1С
 
гуру
28.02.24
09:55
В типовых сделали РС ИерархияПартнеров, скрытые данные, которые заполняются при записи справочника. Удобно получать иерархию
14 АгентБезопасной Нацио
 
28.02.24
10:37
(12) решение без всяких дополнительных обходов - в (5)
15 Eiffil123
 
28.02.24
11:32
(12) помоему самое оптимальное решение. И код будет читаемый.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший