Имя: Пароль:
1C
1С v8
Построить ДеревоЗначений в запросе по двум разным справочникам
0 Dmitriy_
Kolesnikov
 
23.11.18
10:45
У меня нет других идей, кроме как добавлять поле Родитель, выводить в ТаблицуЗначений, а дальше циклом с рекурсией строить ДеревоЗначений.
Суть такая. Есть запрос к справочникам: ШтатноеРасписание (не иерархический, подчинен Организации), ПодразделенияОрганизации (иерархический, подчинен Организации).
Мне надо построить иерархию сразу по двум справочникам, то есть на первом уровне иерархии у нас Организация, на втором - как позиции штатного расписания, так и подразделения организации, на третьем - то же самое, на четвертом и ниже - только подразделения.
Я построил в запросе таблицу с полями Родитель (может быть двух типов - ШтатноеРасписание и ПодразделенияОрганизации) и ЭлементСхемы (может быть тех же двух типов).
Теперь было бы хорошо выгрузить это сразу в дерево значений. Возможно ли такое и если да, то как?

На самом деле, всё это делается в СКД:
МакетКомпоновки = КомпоновщикМакета.Выполнить(ЭтотОбъект.СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

Но если надо - могу и запросом. Вопрос лишь в том, как получить сразу дерево значений с правильной иерархией, а не таблицу значений.
1 МихаилМ
 
23.11.18
10:52
пробуйте запрос скормить пз
2 Ник080808
 
23.11.18
10:53
(0) Создаем дерево с нужной структурой и обходим результат СКД и заполняем дерево результатом.
3 DexterMorgan
 
23.11.18
10:59
4 DexterMorgan
 
23.11.18
11:02
(0) Ну и тут https://its.1c.ru/db/metod8dev#content:1984:hdoc

"Описание иерархических наборов данных" и тд
5 Ник080808
 
23.11.18
11:18
(4) он типа уже получил в скд. Теперь не знает как это в дерево запихнуть
6 Dmitriy_
Kolesnikov
 
23.11.18
12:06
Я правильно понимаю вас: настройки варианта отчета в СКД влияют на вывод в дерево значений?
Просто в табличный документ у меня свой вывод, не средствами СКД.
7 Dmitriy_
Kolesnikov
 
23.11.18
12:26
В типовом отчете сделано как в (4). Теперь надо с этим разобраться и переделать под себя.
8 DexterMorgan
 
23.11.18
12:37
(5) а че там сложного, в инете куча всего:

    
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
    КомпоновщикНастроек.Настройки,,,
    Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ДЗ = Новый ДеревоЗначений;
ПроцессорВывода.УстановитьОбъект(ДЗ);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
9 Dmitriy_
Kolesnikov
 
23.11.18
12:41
(8) это всё есть в типовом отчете, который я переделываю.

Там второй набор данных (для иерархии) и связи наборов данных формируются программно. Вот с этим придется разобраться.
10 DexterMorgan
 
23.11.18
12:42
(9) В чем у тебя вопрос?
11 Dmitriy_
Kolesnikov
 
23.11.18
12:49
(10) пока вопросов нет, есть пища для размышления.
Разбираюсь с типовым кодом, если возникнут вопросы - задам.
Принцип ясен из (4), благодарю.