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