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