Произвольная группировка колонок в СКД

1. herfis 499 16.07.18 16:18 Сейчас в теме
Никак не могу сообразить.
У меня выводимые ресурсы разбиты на две большие группы плана и факта (ну и собственно и оформлены группами выводимых полей).
Все хорошо, но я хочу заставить СКД добавить вертикальную свертку этих групп "плюсиком", чтобы можно было отдельно расматривать детализацию плана и факта. Не могу сообразить, как меньшей кровью это можно реализовать. Или только постобработкой извращаться?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
14. herfis 499 17.07.18 15:36 Сейчас в теме +2 $m
По итогу родился такой костыль:
Процедура ВключитьВозможностьСверткиГруппыКолонок(ДокументРезультат, НазваниеГруппыКолонок)
	
	// найдем первую ячейку группы
	ПерваяЯчейкаГруппы = ДокументРезультат.НайтиТекст(НазваниеГруппыКолонок,,,,Истина);
	Если ПерваяЯчейкаГруппы = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	// определим количество колонок группы (используется особенность объединенных ячеек - одинаковый текст в них)
	КвоКолонокГруппы = 1;
	Пока ПерваяЯчейкаГруппы.Текст = ДокументРезультат.Область(ПерваяЯчейкаГруппы.Верх, ПерваяЯчейкаГруппы.Лево + КвоКолонокГруппы).Текст Цикл
		КвоКолонокГруппы = КвоКолонокГруппы + 1;
	КонецЦикла;
	
	КолонкаНачалаСвертки = ПерваяЯчейкаГруппы.Лево;
	КолонкаКонцаСвертки = ПерваяЯчейкаГруппы.Лево + КвоКолонокГруппы - 1;
	
	// сгруппируем колонки группы
	ДокументРезультат.Область(, КолонкаНачалаСвертки, ПерваяЯчейкаГруппы.Верх, КолонкаКонцаСвертки).Сгруппировать();
	
КонецПроцедуры
Показать
SysolyatinSN; sashasashanox; andy3626603; r501; doda666; molodoi1sneg; rintik; +7 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Leon75 16.07.18 16:51 Сейчас в теме
(1)Выгрузите схему и выложите сюда.
5. Timur.V 78 16.07.18 16:58 Сейчас в теме
(1)
Если хочется убирать столбцы, можно как в ЗУП 3.1 отчет Анализ взносов в фонды
Прикрепленные файлы:
8. herfis 499 16.07.18 17:33 Сейчас в теме
(5) У меня этой типовой под рукой нет. Но если требуется переформирование отчета, то не подходит.
2. leosoft 165 16.07.18 16:49 Сейчас в теме
Может попробовать раскидать ресурсы в папки?
7. herfis 499 16.07.18 17:31 Сейчас в теме
(2) Уже.
(6) Это можно. И это как раз работать будет. Но не по пустой группировке. Т.е. придется дорабатывать исходный запрос, увеличивая при этом вдвое количество детальных записей. Или я не понял предложения.
4. Timur.V 78 16.07.18 16:51 Сейчас в теме
Может быть сделать отбор по План/Факт ?
Покажите скриншот, а то не могу сообразить что нужно?
6. Ferth 16.07.18 17:02 Сейчас в теме
Сделать вывод в виде таблицы.
В ней можно указать группировку по колонке, значениями которой будут План и Факт
9. herfis 499 16.07.18 17:38 Сейчас в теме
Уточню - у меня не набор зеркальных полей план/факт. У меня набор ресурсов, разных по смыслу. Одна группа ресурсов содержит детали расчета плановых показателей, другая - детали внесенного факта. Другими словами можно забыть про план/факт и говорить просто о двух группах произвольных полей вывода.
10. herfis 499 16.07.18 17:44 Сейчас в теме
Еще уточню постановку задачи. Допустим есть две группы полей-ресурсов (от фонаря)
ЗаказПоле1
ЗаказПоле2
ЗаказПоле3
ПродажаПоле1
ПродажаПоле2
ПродажаПоле3
ПродажаПоле4
ПродажаПоле5
Они объединены в группы выводимых полей "Заказ" и "Продажа".
Хочу, чтобы по "минусику/плюсику" можно было "схлопывать" и "разворачивать" эти группы колонок независимо друг от друга без переформирования отчета. Аналогично тому, как сама СКД выводит группировки колонок в настройке вида "Таблица". Но не меняя при этом исходный запрос.
11. herfis 499 17.07.18 12:15 Сейчас в теме
Попробовал через постобработку методом Сгруппировать() для области ячеек. Но и тут затык.
Для группировки в метод надо передавать именно области колонок (прямоугольную область передать нельзя - ругается "Неприемлемая для операции область").
А СКД формирует табличный документ с областями строк, имеющие разные форматы (различную ширину колонок). И абсолютно непонятно, как сгруппировать колонки именно в области таблицы.
12. herfis 499 17.07.18 12:47 Сейчас в теме
Ыыыы! Оказывается методом Область() таки можно получить область колонок по нужному формату строк. Номер первой строки должен быть пустым (понимает, что область колонок), а номер последней строки должен приходиться на строку с нужным форматом строк. Век живи - век учись.
13. herfis 499 17.07.18 13:23 Сейчас в теме
Еще одна смешная проблема - не могу программно определить диапазон объединенных ячеек имея первую ячейку из объединения.
14. herfis 499 17.07.18 15:36 Сейчас в теме +2 $m
По итогу родился такой костыль:
Процедура ВключитьВозможностьСверткиГруппыКолонок(ДокументРезультат, НазваниеГруппыКолонок)
	
	// найдем первую ячейку группы
	ПерваяЯчейкаГруппы = ДокументРезультат.НайтиТекст(НазваниеГруппыКолонок,,,,Истина);
	Если ПерваяЯчейкаГруппы = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	// определим количество колонок группы (используется особенность объединенных ячеек - одинаковый текст в них)
	КвоКолонокГруппы = 1;
	Пока ПерваяЯчейкаГруппы.Текст = ДокументРезультат.Область(ПерваяЯчейкаГруппы.Верх, ПерваяЯчейкаГруппы.Лево + КвоКолонокГруппы).Текст Цикл
		КвоКолонокГруппы = КвоКолонокГруппы + 1;
	КонецЦикла;
	
	КолонкаНачалаСвертки = ПерваяЯчейкаГруппы.Лево;
	КолонкаКонцаСвертки = ПерваяЯчейкаГруппы.Лево + КвоКолонокГруппы - 1;
	
	// сгруппируем колонки группы
	ДокументРезультат.Область(, КолонкаНачалаСвертки, ПерваяЯчейкаГруппы.Верх, КолонкаКонцаСвертки).Сгруппировать();
	
КонецПроцедуры
Показать
SysolyatinSN; sashasashanox; andy3626603; r501; doda666; molodoi1sneg; rintik; +7 Ответить
15. andy3626603 31.10.21 21:26 Сейчас в теме
Супер!!!! Всю голову сломал чтобы сделать разворачивающуюся колонку с адресом в отчёте. Спасибо за работающий костыль
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот