СКД: вывод данных с иерархией Доброго времени суток всем! Пытаюсь вывести иерархические данные, используя набор данных-объект, однако никакой иерархичности не получаю. Отчего-то в результирующем табличном документе сведения выводятся в один столбец без отображения уровней иерархии. По определённым причинам нужно использовать именно набор данных-объект, поэтому привожу упрощённый фрагмент кода. Гуру СКД, ткните носом, в чём я неправ. :-) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Ссылка |ИЗ | Справочник.Номенклатура"; ТабСведения = Запрос.Выполнить().Выгрузить(); ТекСхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных; ИсточникДанных = ТекСхемаКомпоновкиДанных.ИсточникиДанных.Добавить(); ИсточникДанных.Имя = "ИсточникДанных"; ИсточникДанных.ТипИсточникаДанных = "Local"; НаборДанныхОбъект = ТекСхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных")); НаборДанныхОбъект.Имя = "НаборДанныхОбъект"; НаборДанныхОбъект.ИмяОбъекта = "ДвиженияПоСтатьямОборотов"; НаборДанныхОбъект.ИсточникДанных = "ИсточникДанных"; ПолеНабораДанных = НаборДанныхОбъект.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); ПолеНабораДанных.Поле = "Ссылка"; ПолеНабораДанных.ПутьКДанным = "Ссылка"; ТекКомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; ТекКомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(ТекСхемаКомпоновкиДанных)); ТекНастройки = ТекКомпоновщикНастроек.Настройки; ТекГруппировка = ТекНастройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); ТекГруппировка.Имя = "Группировка"; ТекГруппировка.Использование = Истина; ПолеГруппировки = ТекГруппировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); ПолеГруппировки.Использование = Истина; ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Ссылка"); ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Иерархия; ВыбранныеПоля = ТекГруппировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); ВыбранныеПоля.Использование = Истина; ЭлементСортировки = ТекГруппировка.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных")); ЭлементСортировки.Использование = Истина; ТекКомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; ТекПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ТекПроцессорКомпоновкиДанных.Инициализировать(ТекКомпоновщикМакета.Выполнить(ТекСхемаКомпоновкиДанных, ТекНастройки), Новый Структура("ДвиженияПоСтатьямОборотов", ТабСведения)); ТекПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ТабДокРезультатКомпоновкиДанных = Новый ТабличныйДокумент; ТекПроцессорВывода.УстановитьДокумент(ТабДокРезультатКомпоновкиДанных); ТекПроцессорВывода.Вывести(ТекПроцессорКомпоновкиДанных); ТабДокРезультатКомпоновкиДанных.Показать(); |
Зачем набирать компоновку вручную? За стеной кода ты не видишь, что у тебя поле компоновки остается нетипизированным, а значит система не сможет сгенерировать для него набор для получения иерархии. |
Классно! Добавил строчку ПолеНабораДанных.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.ГруппыПользователей"); и всё заработало. Спасибо, Reaper! Что же до стены кода - поверь, это не от хорошей жизни. Просто, как я уже упоминал, пример сильно упрощён, а на самом деле в моём случае без этого не обойтись. |
В (2), конечно же, надо читать ПолеНабораДанных.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Номенклатура"); Слегка спалился... :-) |
Текущее время: 09:51. Часовой пояс GMT +3. |