AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.12.2010, 16:08   #1  
ansoft is offline
ansoft
Участник
Аватар для ansoft
 
123 / 37 (2) +++
Регистрация: 20.10.2005
Секция 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  
ansoft is offline
ansoft
Участник
Аватар для ansoft
 
123 / 37 (2) +++
Регистрация: 20.10.2005
Цитата:
вообще непонятно как "объехать" Epilog, который ранее приписывался в конец автоотчета, а теперь тоже в конце, с той только разницей что с новой строки.
Опечатался... с той только разницей что с новой страницы.

Up
Старый 24.12.2010, 13:54   #3  
danket is offline
danket
Участник
 
7 / 11 (1) +
Регистрация: 24.12.2010
Проблемма актуальна и для меня....
Старый 24.12.2010, 17:36   #4  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Куда "пнуть" - не знаю. Но в качестве временного решения для обычных отчетов вместо секции Epilog можно использовать секцию Footer для специально созданной Section Group у которой не указан признак группировки.

В этом случае у группы будет только один подвал по окончании печати отчета. Соответственно, все остальные Section Group надо будет поместить внутрь этой фиктивной группы.
Старый 24.12.2010, 18:04   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Кстати, добавлю, что упоминание этой "беды" в форуме уже встречалось

Отчет: секции Epilog и PageFooter
Epilog && PageFooter
Старый 25.12.2010, 19:09   #6  
EfimV is offline
EfimV
Участник
 
30 / 22 (1) +++
Регистрация: 19.04.2008
Адрес: Москва
Столкнулся с то же проблемой при переносе отчётов из 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  
ansoft is offline
ansoft
Участник
Аватар для ansoft
 
123 / 37 (2) +++
Регистрация: 20.10.2005
Все спасибо за высказывания, но они не решают проблемы.

Цитата:
Владимир Максимов
для обычных отчетов вместо секции Epilog можно использовать секцию Footer...
Можно, но для обычных отчетов для меня проще скопировать Epilog в ProgrammableSection.
Об этом я писал, вопрос про автоотчеты и ReportTemplate "FrontPage" в который добавлен Epilog!
Так же я писал, что темы типа Epilog + PageFooter ответа не дают!

Цитата:
EfimV
Столкнулся с то же проблемой при переносе отчётов из AX3 в DAX2009.
Решал следующим образом.
1) Создаю ProgrammableSection...
Я делаю так же, о чем написано в моем посте:
Цитата:
Мешает такая ситуация тем, что во всех отчетах приходится Epilog на ProgrammableSection менять
Для решения проблемы я добавил вместо эпилога в ReportTemplate "FrontPage" ProgrammableSection и вызвал из метода fetch класса SysReportRun, однако... итоги автоотчета выводятся после вывода моей секции в методе класса ClassFactory:
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  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от ansoft Посмотреть сообщение
Можно, но для обычных отчетов для меня проще скопировать Epilog в ProgrammableSection.
Отличие Group Footer от ProgrammableSection как раз в том и заключается, что нет необходимости программно запускать выполнение секции.

Цитата:
Сообщение от ansoft Посмотреть сообщение
Так же я писал, что темы типа Epilog + PageFooter ответа не дают!
Вы как-то не внимательно их читали. Первая же приведенная ссылка дает ответ

Цитата:
Руководство разработчика
--------------------------------------------------------------------------------
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.
Т.е. это как раз в Ax3.0 поведение было НЕ стандартное. Но и в Ax2.5, и в Ax4.0, и в AX2009 все работает по "стандарту".

Более того, в "широко известных в узких кругах" книге "MORPHX IT Введение в язык программирования в Axapta X++ и среду разработки MorphX" написанной по версии Ax3.0 именно для секции epilog() приводится код как заставить его выполнится на НОВОЙ странице. Т.е. опять же, с точки зрения автора книги Steen Andreasen поведение, когда Epilog печатается до PageFooter рассматривается как не стандартной. Т.е. поведение, с которым надо бороться
Старый 27.12.2010, 11:41   #9  
ansoft is offline
ansoft
Участник
Аватар для ansoft
 
123 / 37 (2) +++
Регистрация: 20.10.2005
Владимир.

1) Спасибо, но
Цитата:
Отличие Group Footer от ProgrammableSection как раз в том и заключается, что нет необходимости программно запускать выполнение секции.
мне удобнее executeSection, может у меня нет вкуса... но увы.

2) Первая же ссылка не дает ответа на конкретный вопрос: как сделать так, чтобы работало как
в 3.0 (съэмитировать, перепрограмировать и т.п.)... эта ссылка полемика о правильности, а меня
интересует конкретная задача, но есть там и такие слова:
Цитата:
По логике разработчиков Аксапты - может быть. Но в известных мне построителях отчетов (например CrystalReports, FastReport) - это не так.
В любом случае, большое спасибо за ответ.
Вопрос звучит так: как сделать так же неправильно в 2009, как оно работало в 3.0?
Если кто знает, помогите советом. Для обычных отчетов решаемо, вопрос про автоотчеты!
Надо сделать так чтобы выводилась некая секция как Epilog в версии 3.0!
Старый 27.12.2010, 12:16   #10  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Да, был не внимателен. Только что обратил внимание, что у Вас полоса Epilog создана в шаблоне автоотчета. Я бы попытался влезть не в методы исполнения уже сгенеренного автоотчета, а в методы собственно генерации дизайна автоотчета. Т.е. в методы формы SysTableForm.

Как идея: взять за образец созданную ProgrammableSection и по окончании генерации дизайна отчета создать еще одну группу по какой-либо таблице Parameters (чтобы была одна запись). Не знаю, насколько это осуществимо...

Последний раз редактировалось Владимир Максимов; 27.12.2010 в 12:42.
Старый 27.12.2010, 12:44   #11  
ansoft is offline
ansoft
Участник
Аватар для ansoft
 
123 / 37 (2) +++
Регистрация: 20.10.2005
Нет PageFooter-а нет, есть только Epilog...
А про итоги это я уже рассказывал когда этот Epilog сменил на ProgrammableSection...
Я пытался вывести вместо Epilog-а свою программируемую секцию, что отчасти получилось, но
при этом окончательный общий итог печатался ниже моей секции.
Теги
report builder, отчет, report

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: List of fixes that improve performance of certain features in Dynamics AX 2009 Blog bot DAX Blogs 0 13.10.2009 19:06
msdynamicsax: DAX 2009 and MS SQL 2008 Blog bot DAX Blogs 0 09.08.2008 14:05
dax-lessons: Generate XML Documentation Files for a project - DAX 2009 Blog bot DAX Blogs 0 08.08.2008 19:06
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
msdynamicsax: Enterprise Portal development in DAX 2009 Blog bot DAX Blogs 0 18.04.2008 07:06

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:57.