Показать сообщение отдельно
Старый 05.03.2013, 10:14   #10  
SVlk is offline
SVlk
Участник
 
7 / 10 (1) +
Регистрация: 17.01.2012
Аксапта 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 - чисто клиентский объект.
Как его сделать серверным?
В этой ветке у всех получилось.
Что я делаю не так?