|
![]() |
#1 |
Участник
|
Аксапта 2009.
Есть следующий код: X++: public void run() { SalesReport_Invoice4Paym_RU launcher; PrintJobSettings printJobSettings; FileName fileName; ; super(); invoice4PaymJour = CustInvoice4PaymJour_RU::find('0100000'); fileName = strfmt("%1%2.pdf", 'C:\\temp\\', invoice4PaymJour.Invoice4PaymId); printJobSettings = new PrintJobSettings(); printJobSettings.format(PrintFormat::PDF); printJobSettings.setTarget(PrintMedium::File); printJobSettings.allPages(true); printJobSettings.fileName(fileName); launcher = new SalesReport_Invoice4Paym_RU(); launcher.setParameters(PrintCopyOriginal::OriginalPrint, invoice4PaymJour); launcher.prompt(); launcher.setPrintJobSettings(printJobSettings.packPrintJobSettings()); launcher.run(); } Но PDF файл создается на локальной машине. Если запускать в пакетной обработке - падает сервер. Картинка в отчете есть, но я ее скрываю. Помогите, кто сталкивался. ------------------------------- Зашел с другой стороны: Сделал тупой отчет с одной строчкой, класс наследник RunBaseReport (серверный) переопределил функцию: X++: void makePrintJobSettings() { FileName fileName; ; super(); fileName = 'C:\\temp\\test123.pdf'; printJobSettings = new PrintJobSettings(); printJobSettings.format(PrintFormat::PDF); printJobSettings.setTarget(PrintMedium::File); printJobSettings.allPages(true); printJobSettings.fileName(fileName); } При запуске в батче выдает ошибку: Ошибка времени выполнения: PrintJobSettings Объект не инициализирован. (S)\Classes\PrintJobSettings\packPrintJobSettings (S)\Classes\RunBaseReport\run - line 16 (S)\Classes\BatchRun\runJobStatic - line 63 По всему выходит что PrintJobSettings - чисто клиентский объект. Как его сделать серверным? В этой ветке у всех получилось. Что я делаю не так? |
|
![]() |
#2 |
Участник
|
Победил.
Во втором примере в Run() добавил this.initParmDefault(); Заработало. Точнее стал говорить внятные ошибки. Причины в массе клиентских вызовов в разных местах. Когда все поубирал - заработало. В том числе и первый пример. Отлаживал на сервере по методе: Отладка на сервере По поводу изображений - да, не работает с изображениями. Класс Image - клиентский. В хелпе такое висит: Note In Microsoft Dynamics AX, the Image class is bound to the client. The class can no longer be run from the server because of the security risks that are associated with file handling. А в классе PDFViewer в методе writeBitmap на 49 строчке используется: img = new Image(c); |
|