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), конечно же, надо читать ПолеНабораДанных.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Номенклатура"); Слегка спалился... :-) | |
| Интернет-форум Краснодарского края и Краснодара |