22.12.2010, 16:08 | #1 |
Участник
|
Секция Epilog в DAX 2009 vs 3.0
Помогите советом.
Секция Epilog в DAX 2009 печатается всегда с новой страницы, в 3.0 такой беды не было. Такое происходит вне зависимости от наличия PageFooter. Мешает такая ситуация тем, что во всех отчетах приходится Epilog на ProgrammableSection менять, а в ReportTemplate "FrontPage" для Автоотчетов вообще непонятно как "объехать" Epilog, который ранее приписывался в конец автоотчета, а теперь тоже в конце, с той только разницей что с новой строки. Если кто знает куда нужно "стукнуть" DAX 2009, чтобы заработало как надо... поделитесь. Kernel version: 5.0.1500.3761 P.S. Темы про Epilog+PageFooter ни ответа, ни решения не дают. |
|
23.12.2010, 09:42 | #2 |
Участник
|
Цитата:
вообще непонятно как "объехать" Epilog, который ранее приписывался в конец автоотчета, а теперь тоже в конце, с той только разницей что с новой строки.
Up |
|
24.12.2010, 13:54 | #3 |
Участник
|
Проблемма актуальна и для меня....
|
|
24.12.2010, 17:36 | #4 |
Участник
|
Куда "пнуть" - не знаю. Но в качестве временного решения для обычных отчетов вместо секции Epilog можно использовать секцию Footer для специально созданной Section Group у которой не указан признак группировки.
В этом случае у группы будет только один подвал по окончании печати отчета. Соответственно, все остальные Section Group надо будет поместить внутрь этой фиктивной группы. |
|
24.12.2010, 18:04 | #5 |
Участник
|
Кстати, добавлю, что упоминание этой "беды" в форуме уже встречалось
Отчет: секции Epilog и PageFooter Epilog && PageFooter |
|
25.12.2010, 19:09 | #6 |
Участник
|
Столкнулся с то же проблемой при переносе отчётов из AX3 в DAX2009.
Решал следующим образом. 1) Создаю ProgrammableSection. 2) Ctr+C Ctr+V переношу методы. 3) Ctr+C Ctr+V переношу дизайн. 4) Из метода fetch делаю вызов ProgrammableSection (если у отчёта несколько дизайнов, ProgrammableSection вызывается у активного т.е. своим секциям в разных дизайнах можно присвоить один и тот же номер) 5) «Отменяю» вызов старой секции. Перекрываю метод executeSection без вызова Super(). |
|
27.12.2010, 10:29 | #7 |
Участник
|
Все спасибо за высказывания, но они не решают проблемы.
Цитата:
Владимир Максимов
для обычных отчетов вместо секции Epilog можно использовать секцию Footer... Об этом я писал, вопрос про автоотчеты и ReportTemplate "FrontPage" в который добавлен Epilog! Так же я писал, что темы типа Epilog + PageFooter ответа не дают! Цитата:
EfimV
Столкнулся с то же проблемой при переносе отчётов из AX3 в DAX2009. Решал следующим образом. 1) Создаю ProgrammableSection... Цитата:
Мешает такая ситуация тем, что во всех отчетах приходится Epilog на ProgrammableSection менять
X++: public ReportViewer createReportViewer(PrintJobHeader _jobsCursor, PrintJobPages _pagesCursor, ReportRun _reportRun=null) { ReportViewer ret; ret = super(_jobsCursor, _pagesCursor, _reportRun); // вызов xClassFactory.createReportViewer // из этого метода после вывода итогов для автоотчета (которые он же выводит) // вызывается вывод эпилога, но уже с новой страницы... } в случае когда используется AutoDesignSpecs в ReportDesign и в один отчет осуществляется вывод несколько раз (несгруппированные и затем сгруппированные данные), то получается что добавленная таким образом секция ProgrammableSection через fetch SysReportRun выводится несколько раз (так как fetch отрабатывает несколько раз), хотя при использовании секции типа Epilog такого не происходит. Проблема осталась нерешенной. |
|
27.12.2010, 11:18 | #8 |
Участник
|
Цитата:
Вы как-то не внимательно их читали. Первая же приведенная ссылка дает ответ Цитата:
Руководство разработчика
-------------------------------------------------------------------------------- Epilog - end of the report. Use it to display items such as a logo. The epilog is printed just after the page footer on the last page in a report. Более того, в "широко известных в узких кругах" книге "MORPHX IT Введение в язык программирования в Axapta X++ и среду разработки MorphX" написанной по версии Ax3.0 именно для секции epilog() приводится код как заставить его выполнится на НОВОЙ странице. Т.е. опять же, с точки зрения автора книги Steen Andreasen поведение, когда Epilog печатается до PageFooter рассматривается как не стандартной. Т.е. поведение, с которым надо бороться |
|
27.12.2010, 11:41 | #9 |
Участник
|
Владимир.
1) Спасибо, но Цитата:
Отличие Group Footer от ProgrammableSection как раз в том и заключается, что нет необходимости программно запускать выполнение секции.
2) Первая же ссылка не дает ответа на конкретный вопрос: как сделать так, чтобы работало как в 3.0 (съэмитировать, перепрограмировать и т.п.)... эта ссылка полемика о правильности, а меня интересует конкретная задача, но есть там и такие слова: Цитата:
По логике разработчиков Аксапты - может быть. Но в известных мне построителях отчетов (например CrystalReports, FastReport) - это не так.
В любом случае, большое спасибо за ответ. Если кто знает, помогите советом. Для обычных отчетов решаемо, вопрос про автоотчеты! Надо сделать так чтобы выводилась некая секция как Epilog в версии 3.0! |
|
27.12.2010, 12:16 | #10 |
Участник
|
Да, был не внимателен. Только что обратил внимание, что у Вас полоса Epilog создана в шаблоне автоотчета. Я бы попытался влезть не в методы исполнения уже сгенеренного автоотчета, а в методы собственно генерации дизайна автоотчета. Т.е. в методы формы SysTableForm.
Как идея: взять за образец созданную ProgrammableSection и по окончании генерации дизайна отчета создать еще одну группу по какой-либо таблице Parameters (чтобы была одна запись). Не знаю, насколько это осуществимо... Последний раз редактировалось Владимир Максимов; 27.12.2010 в 12:42. |
|
27.12.2010, 12:44 | #11 |
Участник
|
Нет PageFooter-а нет, есть только Epilog...
А про итоги это я уже рассказывал когда этот Epilog сменил на ProgrammableSection... Я пытался вывести вместо Epilog-а свою программируемую секцию, что отчасти получилось, но при этом окончательный общий итог печатался ниже моей секции. |
|
Теги |
report builder, отчет, report |
|
|