Есть простая задача по формированию печатной формы заказа (файл xlsx).
В заказе есть шапка и строки позиций заказа.
Строки заказа могут быть 2х типов : основная продукция и прочее.
В форме xlsx надо вывести шапку Заказа и спецификацию (строки) двумя полосами: основная продукция и прочая продукция.
Примерно так:
Вроде все просто, но с толкнулся с тем, что в xlsx выводятся пустые полосы даже если в заказе нету строк вообще.
Собрал предельно упрощенный тестовый пример на котором воспроизводится это странное поведение.
В проекте есть 2 отчета (Report for entity “Order” и Report for entity “Order” (2)) с одинаковой структурой:
И одинаковым шаблоном:
В 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
:
Есть тестовая сущность Заказ (num = blank) в которой строк заказ нет вообще.
Для заказа со строкам отчет выдает вот такое чудо (num = lines4):
Для заказа в котором вообще нет срок (num = blank):
Т.е. в отчет выдаются пустые полосы.
Второй отчет Report for entity "Order" (2)
аналогичен первому, но в нем выборка идет вместо логического isMainProd=true
по атрибуту price
(тип Double
).
Для того же заказа со строками результат гораздо более адекватный:
Но для заказа без строк снова выводит пустые полосы:
Тестовый проект: testreportblanklines.zip (146.7 КБ)