Удаление пустых группировок в СКД
Отчет имеет структуру группировок:
Показатель
— Группа статей
—- Статья
Иногда показатель идет без статьи и получаются пустые строки. Нужно их удалять.
Отчет в СКД формируется из таблицы значений. Поэтому я просто заменяю в таблице значений пустые статьи и группы статей неким уникальным GUID:
ПометитьПустыеСтрокиТаблицыОтчета(ТЗРез); Процедура ПометитьПустыеСтрокиТаблицыОтчета(ТЗРез) ПустаяГруппировка = ПустаяГруппировка(); Для Каждого Строка ИЗ ТЗРез Цикл Если НЕ ЗначениеЗаполнено(Строка.Статья) Тогда Строка.Статья = ПустаяГруппировка; Конецесли; Если НЕ ЗначениеЗаполнено(Строка.РодительСтатьи) Тогда Строка.РодительСтатьи = ПустаяГруппировка; Конецесли; КонецЦикла; КонецПроцедуры Функция ПустаяГруппировка() Возврат "2dd35862-c6a9-471d-b31e-1db461e21a23"; КонецФункции
Отчет после этого выглядит так:
После чего специальным кодом обрабатываю готовый отчет и вырезаю строки, содержащие этот GUID:
ОчиститьСтрокиТабличногоДокументаСодержащиеМаркер(ДокументРезультат, ПустаяГруппировка()); Процедура ОчиститьСтрокиТабличногоДокументаСодержащиеМаркер(ДокументРезультат, Маркер, ЯчейкаЦеликом = истина) Экспорт Пока Истина Цикл Область = ДокументРезультат.НайтиТекст(Маркер,,,, ЯчейкаЦеликом); Если Область = Неопределено Тогда Возврат; КонецЕсли; ОбластьСтрока = ДокументРезультат.Область(Область.Верх, Область.Лево, Область.Верх ,ДокументРезультат.ШиринаТаблицы); ДокументРезультат.УдалитьОбласть(ОбластьСтрока, ТипСмещенияТабличногоДокумента.ПоВертикали); КонецЦикла; КонецПроцедуры
Мало того, ненужные мне строки в заголовке я тоже удаляю этим же методом, указывая для полей Статья и Группа статей синонимы в виде этого GUID:
Отчет получается компактным и не мозолит глаза ненужными строками. Рекомендую способ!
А где итоговый результат табличного документа?
он не требуется.
Все это делается отборами. В пользовательском режиме даже можно
не делается отборами.
Вот пример:
Показатель, Статья, Сумма
Выручка, , 1000
Оборот,Пиво,300
Оборот,Водка,200
Выведет так:
Выручка 1000
— 1000
Оборот 500
— Пиво,300
— Водка,200
Если отключить отбором пустую статью, выведет так:
Оборот 500
— Пиво,300
— Водка,200
Однако в итоге так
https://dropmefiles.com/mcbaF
не уверен, вышли тестовую обработку на fixin@mail.ru
Я предлагаю вариант лучше. Изучить скд и не изобретать велосипед
Не знаю, СКД надо еще проверять.
Мне мой метод больше нравится.
Нет, если включить отборы, то данные не будут учтены в таблице. Они будут полностью исключены, как будто их убрали на уровне запроса. Если вы не можете придумать задачу, где это необходимо, то просто еще не сталкивались.
да. на практике есть более сложные случаи, о которых я и рассказываю. К сожалению, иерархия в СКД не особо управляема. По крайней мере, вырезанием ненужного проще ею управлять чем предлагаемыми в СКД инструментами.
Доброго дня! Спасибо за пример. Тоже долго мучился, перебирал отборы, в итоге сработал отбор «Группа НЕ»
Хорошо.