Отчет xlsx выводит пустые полосы на Platform 7.2

Есть простая задача по формированию печатной формы заказа (файл xlsx).
В заказе есть шапка и строки позиций заказа.
Строки заказа могут быть 2х типов : основная продукция и прочее.
В форме xlsx надо вывести шапку Заказа и спецификацию (строки) двумя полосами: основная продукция и прочая продукция.
Примерно так:
image

Вроде все просто, но с толкнулся с тем, что в xlsx выводятся пустые полосы даже если в заказе нету строк вообще.

Собрал предельно упрощенный тестовый пример на котором воспроизводится это странное поведение.
В проекте есть 2 отчета (Report for entity “Order” и Report for entity “Order” (2)) с одинаковой структурой:
image
И одинаковым шаблоном:
image
В Report for entity “Order” запрос для полосы mainProdBandHeader такой:

select ol.isMainProd as mainProdFlag from testreportblanklines_OrderLine ol
where ol.order.id = ${Order.id} 
group by ol.isMainProd

А для дочерней полосы mineProdLines соответственно:

select ol.name as linePosName, ol.count as linePosCount
from testreportblanklines_OrderLine ol
where ol.order.id = ${Order.id}
and ol.isMainProd = ${mainProdBandHeader.mainProdFlag}

Есть тестовая сущность Заказ (num = lines4). В нем 2 позиции с флагом isMainProd=true и 2 с isMainProd=false:
image
Есть тестовая сущность Заказ (num = blank) в которой строк заказ нет вообще.
Для заказа со строкам отчет выдает вот такое чудо (num = lines4):
image
Для заказа в котором вообще нет срок (num = blank):
image
Т.е. в отчет выдаются пустые полосы.

Второй отчет Report for entity "Order" (2) аналогичен первому, но в нем выборка идет вместо логического isMainProd=true по атрибуту price (тип Double).
Для того же заказа со строками результат гораздо более адекватный:
image
Но для заказа без строк снова выводит пустые полосы:
image
Тестовый проект: testreportblanklines.zip (146.7 КБ)

Здравствуйте, @andrey_vb

Спасибо за подробное описание проблемы. Строки содержащие “Основной продукт”, “Наименование” и тд, будут выводится отчёте, так как они указаны в именованом диапазоне в шаблоне отчёта. Для того чтобы не выводит в отчёте данные строки, можно воспользоваться groovy-скриптом и настроить более динамический вывод данных.

Вариант решения вашей проблемы представлен в примере отчёта.

Пример отчета: Report.zip (11.2 КБ)

По поводу некорректного вывода логических переменных в отчёте, а создал тикет.

С Уважением,
Никита

1 симпатия

@shchienko, при внимательном рассмотрении, оказалось, что и ваш вариант отчета выводит пустые строки в Excel. Только благодаря отсутствию явного форматирования ячеек и полностью динамическому формированию заголовков - это не сразу заметно.
Обнаружилось это в процессе изготовления форм, аналогичных этой, но ссо статическим содержимым Ниже табличной части с перечнем продуктов.
Для наглядности внес в шаблон вашего отчета маааленькое изменение - рамка для полос, которые заполняются динамически.
image
Если сформировать отчет на заказе без строк с продуктами, то увидим такую картинку:
image
Отчет прилагаю
Report (1).zip (11.3 КБ)
Обе полосы (mainProdBandHeader и mineProdLines) формируют строки в отчете даже в том случае, если данных Нет.
Если есть явное оформление шаблона обрамлением ячеек или выделение ячеек фоновой заливкой - это становится явно видно.
Но и без визуального оформления ячеек это заметно, если после подобного рода табличной части есть еще полосы со статическим содержимым.
Статическое содержимое в этом случае явно сдвигается вниз от шапки на это энное число пустых строк.

У нас в проекте есть пара форм подобного рода, где в средней части есть полосы с продуктами особого типа (они могут отсутствовать в заказа), а далее есть еще одна полоса со статическими данными и вкраплениями обобщенных данных заказа типа общий вес, сумма и т.п.
Если в заказе нет этих продуктов особого типа, то получаем энное число пустых строк на их месте и сдвиг вниз последней полосы формы.
Ну, понятно, что как только вводим нормальное оформление шаблона с рамками и фоном ячеек - поучаем приведенную выше неприятную картинку.

Можно это как-то победить?

Все еще актуально…

Здравствуйте @andrey_vb,

Для того чтобы не отображать пустые ячейки, необходимо установить свойство reporting.putEmptyRowIfNoDataSelected = false, но это свойство, глобальное.

Документация: https://doc.cuba-platform.com/reporting-7.2-ru/app_properties.html#reporting.putEmptyRowIfNoDataSelected

Сделал пример отчета с параметром reporting.putEmptyRowIfNoDataSelected = false и со статической полосой.
Report.zip (12.0 КБ)

С данными:
image

Без данных:
image

С Уважение,
Никита

1 симпатия

Спасибо огромное!
Параметр reporting.putEmptyRowIfNoDataSelected = false я просмотрел :frowning: , хотя документацию вычитал уже вдоль и поперек.
Теперь все отлично.