Аксапта 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();
}
Класс наследник RunBaseBatch, выполняется на сервере (если вместо этого кода написать копирование файла - отрабатывает на сервере, проверял).
Но 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 - чисто клиентский объект.
Как его сделать серверным?
В этой ветке у всех получилось.
Что я делаю не так?