Группировка на основе условия IF не работает

У меня есть отчет BIP, в котором у меня есть родительская группа как (<?for-each-group:G_1[./TICKET_JOBNUMBER=$JobNum];./TICKET_JOBNUMBER?>), и под ней у меня есть другая группа, которую необходимо выбрать на основе параметра отчета $date. То есть делаю следующее:

<?if@inlines: $date = "" OR $date = null?>
<?for-each-group:current-group();./TICKETNUM?>
<?end if?>
<?if@inlines: $date != "" ?>
<?for-each-group:current-group()[./TICKET_TICKETDATE=$date];./TICKETNUM?>
<?end if?>

Но это дает нежелательный результат. Я хочу, чтобы каждый <?for-each-group:current-group();./TICKETNUM?> был отдельным, но с моими условиями IF он генерирует консолидированный вывод, а не отдельную запись для каждой группы.

В настоящее время я вижу следующее:

введите здесь описание изображения

Но должно быть так:

введите здесь описание изображения

Условия ЕСЛИ работают, если поставить их по отдельности, но не работают, когда я их соединяю.

Ссылка для скачивания rtf и образца xml.

https://drive.google.com/file/d/1e6h6ENsGzjB7Gfzp6vqDlbddREWitS5f/view?usp=sharing https://drive.google.com/file/d/1pwMqtV5PxVmGSySbNllVDIlbK_3cdVaK/view?usp=sharing


person Umer    schedule 08.05.2019    source источник
comment
Уважаемые эксперты, я все еще застрял в этом вопросе, если $date присутствует, то он должен быть частью фильтра, а если он отсутствует, то он не должен быть частью этого выражения фильтра.   -  person Umer    schedule 20.06.2019


Ответы (1)


  1. Вы захотите использовать @section для разделения страниц для новых групп, когда у вас есть правильная группировка/перегруппировка в правильных местах.
  2. for-each и/или for-each-group должны быть только в ячейке таблицы, если вы собираетесь повторять эту конкретную строку/раздел. Я вижу, они у вас в первой ячейке верхней таблицы, так что повторить страницы не получится. Ставьте их перед/снаружи стола.
  3. Вам нужна текущая группа() только в том случае, если вы уже находитесь в разделе группировки и хотите обратиться к сгруппированным элементам. Так что он не должен быть в первой группе.
  4. Я не понимаю, что вы пытаетесь сделать с операторами if. Как правило, если вам нужно условие для одной из записей, просто поместите оператор if внутри for-each/end for-each.
  5. Встроенные строки нужны только в том случае, если вы делаете что-то в середине предложения и вам не нужна новая строка после логики. Насколько я могу судить, он здесь не нужен.

Похоже, вы хотите что-то вроде этого

for-each-group@section:DATA_DS/G_1;TICKETNUM
[header section and table]
[Line]
for-each:current-group();
[line content]
end for-each
end for-each-group

Надеюсь, это поможет вам двигаться в правильном направлении. Похоже, у вас довольно много проблем, поэтому трудно сказать, чего именно вы хотите. И в духе StackOverflow я не хочу делать за вас все решение, просто решу одну проблему, которая у вас есть. Документация BI Publisher на самом деле довольно хороша. Если у вас возникнут проблемы, попробуйте начать с меньшего, заставьте это работать, а затем увеличивайте его оттуда, следя за тем, чтобы каждое новое дополнение работало по мере его добавления.

person EdHayes3    schedule 09.05.2019
comment
Спасибо @EdHayes. Моя единственная проблема заключается в том, что если $date присутствует, то отчет применит фильтр, а если $date отсутствует, то фильтр $date не будет применен. - person Umer; 09.05.2019
comment
Почему бы не поместить это в извлечение данных/SQL? Если вы не будете использовать данные, то зачем извлекать их для начала? - person EdHayes3; 09.05.2019
comment
Я использую CSA (Custom Subject Area) для создания модели данных, и SQL не используется. - person Umer; 10.05.2019