К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

СКД: вывод данных с иерархией

Гость
0 - 20.03.2013 - 09:58
Доброго времени суток всем!

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


Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Ссылка
|ИЗ
| Справочник.Номенклатура";
ТабСведения = Запрос.Выполнить().Выгрузить();

ТекСхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных;
ИсточникДанных = ТекСхемаКомпоновкиДанных.ИсточникиДанных.Добавить( );
ИсточникДанных.Имя = "ИсточникДанных";
ИсточникДанных.ТипИсточникаДанных = "Local";

НаборДанныхОбъект = ТекСхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип ("НаборДанныхОбъектСхемыКомпоновкиДанных"));
НаборДанныхОбъект.Имя = "НаборДанныхОбъект";
НаборДанныхОбъект.ИмяОбъекта = "ДвиженияПоСтатьямОборотов";
НаборДанныхОбъект.ИсточникДанных = "ИсточникДанных";

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

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

ТекГруппировка = ТекНастройки.Структура.Добавить(Тип("ГруппировкаКо мпоновкиДанных"));
ТекГруппировка.Имя = "Группировка";
ТекГруппировка.Использование = Истина;

ПолеГруппировки = ТекГруппировка.ПоляГруппировки.Элементы.Добавить(Т ип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Использование = Истина;
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Ссылка");
ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Иерархия;

ВыбранныеПоля = ТекГруппировка.Выбор.Элементы.Добавить(Тип("АвтоВы бранноеПолеКомпоновкиДанных"));
ВыбранныеПоля.Использование = Истина;
ЭлементСортировки = ТекГруппировка.Порядок.Элементы.Добавить(Тип("Авто ЭлементПорядкаКомпоновкиДанных"));
ЭлементСортировки.Использование = Истина;

ТекКомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
ТекПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ТекПроцессорКомпоновкиДанных.Инициализировать(ТекК омпоновщикМакета.Выполнить(ТекСхемаКомпоновкиДанны х, ТекНастройки), Новый Структура("ДвиженияПоСтатьямОборотов", ТабСведения));
ТекПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличны йДокумент;

ТабДокРезультатКомпоновкиДанных = Новый ТабличныйДокумент;
ТекПроцессорВывода.УстановитьДокумент(ТабДокРезуль татКомпоновкиДанных);
ТекПроцессорВывода.Вывести(ТекПроцессорКомпоновкиД анных);
ТабДокРезультатКомпоновкиДанных.Показать();



Гость
1 - 20.03.2013 - 11:16
Зачем набирать компоновку вручную? За стеной кода ты не видишь, что у тебя поле компоновки остается нетипизированным, а значит система не сможет сгенерировать для него набор для получения иерархии.
Гость
2 - 21.03.2013 - 10:13
Классно!

Добавил строчку

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

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

Спасибо, Reaper!

Что же до стены кода - поверь, это не от хорошей жизни. Просто, как я уже упоминал, пример сильно упрощён, а на самом деле в моём случае без этого не обойтись.
Гость
3 - 21.03.2013 - 10:16
В (2), конечно же, надо читать

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

Слегка спалился... :-)


К списку вопросов






Copyright ©, Все права защищены