|
СКД вывод независимых наборов данных горизонтально | ☑ | ||
---|---|---|---|---|
0
commdt
21.05.15
✎
15:43
|
До сих пор я думал, что разбираюсь в СКД, но тут возникла задача написать отчёт наподобие:
___________________________ |НаборДанных1|НаборДанных2| |____________|____________| Наборы между собой по сути не связаны, т.е. поля группировки и количество строк в них совершенно разные. По вертикали вывести независимые наборы данных не составляет труда, но вот с таким вариантом всё не так просто. Вывести разные наборы данных в виде вложенных схем в колонках таблицы не удалось - их нельзя выбирать в колонках даже через группировку. Вывести какое-то условное поле, например "Приход" (НаборДанных1) и "Расход" (НаборДанных2) в столбцах таблицы можно, но все дальнейшие группировки тоже становятся столбцами. Выводить внутренние группировки как ресурсы нельзя, ибо тогда они суммируются, а нужна разбивка по строкам с промежуточными итогами. Если добавить в строки какую-то условную группировку, чтобы ресурсы разбились по строкам, это срабатывает только для одного набора данных, даже если выбрать группировку по полю Дата, которая присутствует в обоих наборах данных. Короче, я в тупике. Похоже остаётся только строить это чудо по старинке вручную. Да, форма утверждена госзаказчиком, и это намертво, так что с комментариями, наподобие, "не морочься и сделай вертикально" просьба не обращаться. |
|||
1
РазДва
21.05.15
✎
16:17
|
(1) Постобработкой табличного документа "выдрать" область и вставить её "справа"
|
|||
2
commdt
21.05.15
✎
16:42
|
(1) Хм, а это отличная идея. Спасибо
|
|||
3
commdt
25.05.15
✎
16:24
|
Если кому-то вдруг понадобится.
Лучше всего в макете группировок оставить пустые столбцы (в моём случае слева), в которых будет располагаться второй набор данных. В таком случае проще подобрать ширину столбцов и не придётся заморачиваться со сдвигом области. Соответстветственно, под пустыми стобцами рисуете макет группировки, которую нужно туда вставить, а модуле объекта вставляете процедуру наподобие: Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Настройки = КомпоновщикНастроек.Настройки; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,,Истина); ДокументРезультат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); //ДокументРезультат = Новый ТабличныйДокумент; ВысотаТабДок = ДокументРезультат.ВысотаТаблицы; ЕстьПриход = Ложь; Для ПерваяСтрока = 13 По ВысотаТабДок Цикл Если НЕ ДокументРезультат.Область("R" + ПерваяСтрока + "C1").Текст = "" Тогда ЕстьПриход = Истина; Прервать; КонецЕсли; КонецЦикла; Если ЕстьПриход Тогда ПоследняяСтрока = 13 + ВысотаТабДок - ПерваяСтрока; ОбластьИсточник = ДокументРезультат.Область("R" + ПерваяСтрока + "C1:R" + ВысотаТабДок + "C4"); ОбластьПриемник = ДокументРезультат.Область("R13C1:R" + ПоследняяСтрока + "C4"); ДокументРезультат.ВставитьОбласть(ОбластьИсточник,ОбластьПриемник); ДокументРезультат.УдалитьОбласть(ОбластьИсточник); КонецЕсли; КонецПроцедуры 13 - первая пустая строка 4 - количество столбцов под второй набор данных Стандартную обработку отключать обязательно, иначе ничего не произойдёт. |
|||
4
РазДва
25.05.15
✎
17:17
|
(3) Какой удобный человек, накинул ему идею - ушел-сделал.
|
|||
5
Desna
25.05.15
✎
17:25
|
(4) еще и тему назвал как надо
|
|||
6
Desna
25.05.15
✎
17:26
|
имха, такое и через свой макет прокатит
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |