|
Группировка строк для отчета на СКД | ☑ | ||
---|---|---|---|---|
0
NikePopov
26.06.15
✎
13:49
|
Добрый день!
Столкнулся со следующей проблемой: У меня есть отчет на СКД, при его выводе не требуется показывать все группировки отчета, то есть требуется попросту свернуть до уровня 1. В настройках СКД я никаких методов на этот счет не нашел. Форму менять не хочу(используется стандартная для всей конфигурации). То есть все варианты, которые у меня есть для манипулирования - процедура "ПриКомпоновкеРезультата". Для того, чтобы реализовать сворачивание я придумал следующий код: Перем СтатусФормированияОтчета; Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) Если СтатусФормированияОтчета = Неопределено Тогда СтандартнаяОбработка = Ложь; СтатусФормированияОтчета = "Исполнение"; СкомпоноватьРезультат(ДокументРезультат, ДанныеРасшифровки); ДокументРезультат.ПоказатьУровеньГруппировокСтрок(1); КонецЕсли; КонецПроцедуры Он работает, но очень мне не нравится. Никто не знает, каким образом возможно выполнить действие "ПослеКомпановкиРезультата" без извращений? |
|||
1
fisher
26.06.15
✎
13:52
|
А чем не нравится?
ЗЫ. Другого способа не знаю. |
|||
2
Mitriy
26.06.15
✎
13:52
|
а просто настроить вывод не комильфо?
|
|||
3
fisher
26.06.15
✎
13:53
|
Только не понял, что это за пляски со СтатусФормированияОтчета.
|
|||
4
fisher
26.06.15
✎
13:55
|
Хотя я знаю, чем не нравится. Убивается фоновое формирование.
|
|||
5
fisher
26.06.15
✎
13:57
|
(2) Комильфо. Подсказывай, чего и где настраивать, чтобы работало.
|
|||
6
NikePopov
26.06.15
✎
14:19
|
(1) Не нравится своей неочевидностью. Другой человек не поймет, что я делаю, если отчет будет чуть посложнее.
(2) Идеальный вариант! Как? |
|||
7
fisher
26.06.15
✎
14:54
|
(6) Насчет читабельности можешь не волноваться.
Для СКД это стандарт де-факто. Если нужна пост-обработка, то она делается в ПриКомпоновкеРезультата после программной компоновки. |
|||
8
NikePopov
26.06.15
✎
15:08
|
(7) У меня уже есть конфигурация с кучей непонятного программного кода, куда очень боязно лазать. Сам написал - сам боюсь))
Я бы очень согласился на вариант: Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) РаботаСОтчетами.СкомпоноватьРезультатОтчета(ЭтотОбъект, ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка); ДокументРезультат.ПоказатьУровеньГруппировокСтрок(1); КонецПроцедуры Но не знаю как написать содержимое процедуры "СкомпоноватьРезультатОтчета" в общем модуле аналогично стандартной обработке. |
|||
9
Sereja
26.06.15
✎
15:44
|
Процедура СвернутьВсеГруппировки(ПолеТД)
КоличествоГруппировок = ПолеТД.КоличествоУровнейГруппировокСтрок(); Пока КоличествоГруппировок>0 Цикл ПолеТД.ПоказатьУровеньГруппировокСтрок(КоличествоГруппировок); КоличествоГруппировок = КоличествоГруппировок-1; КонецЦикла; ПолеТД.ПоказатьУровеньГруппировокСтрок(КоличествоГруппировок); КонецПроцедуры |
|||
10
NikePopov
26.06.15
✎
15:48
|
(9) Это к чему ты? Формы у меня нет. В процедуре "ПриКомпоновкеРезультата" еще нет табличного документа.А метод "ПоказатьУровеньГруппировокСтрок" работет так же, но в одной строке.
|
|||
11
Sereja
26.06.15
✎
15:53
|
(10) Не так же он работает. Он сворачивает только первую группировку, а все остальные остаются развернутыми. Т.е. если 6 группировок, то когда ты развернешь 1 уровень, то все остальные будут развернуты
|
|||
12
Sereja
26.06.15
✎
15:54
|
+(10) а так все будет свернуто по очереди. с 6 по 1
|
|||
13
NikePopov
26.06.15
✎
16:00
|
(12) Согласен. При моих 2-х группировках разницы не видно)) Но вопрос не в этом.
|
|||
14
NikePopov
26.06.15
✎
16:07
|
Нашел такой код, но теперь вопрос с инициализацией пользовательских настроек:
//Из схемы возьмем настройки по умолчанию Настройки = КомпоновщикНастроек.Настройки; //Формируем макет, с помощью компоновщика макета КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //Передаем в макет компоновки схему, настройки и данные расшифровки МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); //Выполним компоновку с помощью процессора компоновки ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки); //Выводим результат в табличный документ ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
|||
15
NikePopov
26.06.15
✎
16:21
|
Все! Ответ найден!
В модуле объекта отчета: [code] Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) ОтчетыСКД.СкомпоноватьРезультат(ЭтотОбъект, ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка); ДокументРезультат.ПоказатьУровеньГруппировокСтрок(1); КонецПроцедуры [/code] В общем модуле "ОтчетыСКД": [code] Процедура СкомпоноватьРезультат(ОтчетОбъект, ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) Экспорт СтандартнаяОбработка = Ложь; //Из схемы возьмем настройки по умолчанию Настройки = ОтчетОбъект.КомпоновщикНастроек.ПолучитьНастройки(); //Формируем макет, с помощью компоновщика макета КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; //Передаем в макет компоновки схему, настройки и данные расшифровки МакетКомпоновки = КомпоновщикМакета.Выполнить(ОтчетОбъект.СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); //Выполним компоновку с помощью процессора компоновки ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки); //Выводим результат в табличный документ ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); КонецПроцедуры [/code] |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |