![]() |
#9 |
Участник
|
В общем, как я понял, подход такой:
I. Модифицируем форму SysPrintForm, чтобы она предлагала новый канал вывода - наш. В методе initSendTo() добавляем пункт в список II. В SysPrintForm.closeOK() надо задать параметры генерации, хранимые в clientSysPrintOptions. 2 параметра: 1) clientSysPrintOptions.parmTarget(PrintMedium::ViewerClass) это прводит к тому, что ReportRun() вызывает ClassFactory::createViewer(). 2) clientSysPrintOptions.parmViewerType( *XXX*) *XXX* передатся в createViewer как параметр outputType. III. Модифицируем метод <div class='XPPtop'>X++</div><div class='XPP'>ClassFactory::createViewer(PrintJobHeader jobsCursor, PrintJobPages pagesCursor, ReportOutputUserType outputType, ReportRun report=NULL) { ... [color=:blue]case[/color] *XXX*: [color=:blue]return[/color] [color=:blue]new[/color] MyViewer(); }</div> Внимание, вопрос! 8) Перечисление ReportOutputUserType не расширяемо - в него не добавить свое значение *XXX* ! Там есть неиспользуемое значение Viewer4, но не хотелось бы на него завязываться. Я попробовал в качестве *XXX* передавать просто число 100, и ловить в createViewer() тоже 100. Работает. Но пахнет это плохо! Как быть? Верен ли описанный подход? Тут народ в http://www.axforum.ru/forums/showthread.ph...32267#post32267 тоже делал свой канал, они наверняка в курсе. Но при попытке написать им письмо сайт просит обратиться к админу, т.е. к mazzy. Обращаюсь! Mazzy, ка им написать? |
|