Имя: Пароль:
1C
1С v8
СКД: вывод данных с иерархией
,
0 Stolz
 
20.03.13
10:26
Доброго времени суток всем!

Пытаюсь вывести иерархические данные, используя набор данных-объект, однако никакой иерархичности не получаю. Отчего-то в результирующем табличном документе сведения выводятся в один столбец без отображения уровней иерархии. По определённым причинам нужно использовать именно набор данных-объект, поэтому привожу упрощённый фрагмент кода. Гуру СКД, ткните носом, в чём я неправ.

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    Ссылка
|ИЗ
|    Справочник.Номенклатура";
ТабСведения = Запрос.Выполнить().Выгрузить();
ТекСхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных;
ИсточникДанных = ТекСхемаКомпоновкиДанных.ИсточникиДанных.Добавить();
ИсточникДанных.Имя = "ИсточникДанных";
ИсточникДанных.ТипИсточникаДанных = "Local";
НаборДанныхОбъект = ТекСхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
НаборДанныхОбъект.Имя = "НаборДанныхОбъект";
НаборДанныхОбъект.ИмяОбъекта = "ДвиженияПоСтатьямОборотов";
НаборДанныхОбъект.ИсточникДанных = "ИсточникДанных";
ПолеНабораДанных = НаборДанныхОбъект.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
ПолеНабораДанных.Поле = "Ссылка";
ПолеНабораДанных.ПутьКДанным = "Ссылка";
ТекКомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
ТекКомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(ТекСхемаКомпоновкиДанных));
ТекНастройки = ТекКомпоновщикНастроек.Настройки;
ТекГруппировка = ТекНастройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ТекГруппировка.Имя = "Группировка";
ТекГруппировка.Использование = Истина;
ПолеГруппировки = ТекГруппировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Использование = Истина;
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Ссылка");
ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Иерархия;
ВыбранныеПоля = ТекГруппировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
ВыбранныеПоля.Использование = Истина;
ЭлементСортировки = ТекГруппировка.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));
ЭлементСортировки.Использование = Истина;
ТекКомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
ТекПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ТекПроцессорКомпоновкиДанных.Инициализировать(ТекКомпоновщикМакета.Выполнить(ТекСхемаКомпоновкиДанных, ТекНастройки), Новый Структура("ДвиженияПоСтатьямОборотов", ТабСведения));
ТекПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ТабДокРезультатКомпоновкиДанных = Новый ТабличныйДокумент;
ТекПроцессорВывода.УстановитьДокумент(ТабДокРезультатКомпоновкиДанных);
ТекПроцессорВывода.Вывести(ТекПроцессорКомпоновкиДанных);
ТабДокРезультатКомпоновкиДанных.Показать();
1 Stolz
 
20.03.13
11:01
Знатоки СКД, где вы? :-)
2 mikecool
 
20.03.13
11:05
у группировки выбрать тип Иерархия
3 Stolz
 
20.03.13
11:22
(2) Это как? Там, вроде бы, уже указано:

ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Иерархия;
4 Stolz
 
20.03.13
12:12
"И - тишинааа..." (C)
:-(
5 mistеr
 
20.03.13
12:33
(0) Если не ошибаюсь, группировка с иерархией реализуется добавлением еще одного соединения в окончательный запрос. А так как для источника-объекта запросов не делается, то сам понимаешь.

Добавь в свой запрос родителя и опиши иерархию в связях наборов данных.
6 ДемонМаксвелла
 
20.03.13
12:43
Настроек СКД не хватает (наборы данных, связи, настройки, что выводится)

З.Ы. топик неплохо рассмотрен у Хрусталевой и в видеокурсе Гилева по СКД.
7 Stolz
 
20.03.13
13:22
На самом деле, в настройках СКД всего хватает, кроме одной мелочи. :-)

Помогли на Кубани: добавил строчку

ПолеНабораДанных.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Номенклатура");

и всё заработало.