10.01.2014, 14:31 | #1 |
Участник
|
Отчет в pdf из портала.
Коллеги, есть следующая проблема.
Пытаюсь сделать сохранение отчета в формате аксапты через портал(счет на оплату). В аксапте статический метод в классе, делается разноска счета на оплату, с подпихиваением в SalesFormLetter нужного экземпляра PrintJobSettings, При запуске метода через джоб все замечательно отрабатывает - файл сохраняется, при вызове из портала неведомая ошибка: Функция "GetVersionExW" в библиотеке DLL "KERNEL32" привела к возникновению исключения Кто либо сталкивался с подобным, или может есть соображения в чем может быть проблема? Буду рад любым идеям |
|
13.01.2014, 23:00 | #2 |
Участник
|
Вы бы хоть версяию Ах написали
Да, и при запуске какого метода ошибка? при запуске Job'а из портала? |
|
14.01.2014, 03:18 | #3 |
Banned
|
Скорее всего клиент-сервер заморочки или права доступа на папку.
Я бы сделал обработку ошибок с выводом стека и подебажил бы код в обеих вариантах вызова. |
|
08.11.2016, 20:07 | #4 |
Участник
|
Цитата:
Сообщение от jonny
Коллеги, есть следующая проблема.
Пытаюсь сделать сохранение отчета в формате аксапты через портал(счет на оплату). В аксапте статический метод в классе, делается разноска счета на оплату, с подпихиваением в SalesFormLetter нужного экземпляра PrintJobSettings, При запуске метода через джоб все замечательно отрабатывает - файл сохраняется, при вызове из портала неведомая ошибка: Функция "GetVersionExW" в библиотеке DLL "KERNEL32" привела к возникновению исключения Кто либо сталкивался с подобным, или может есть соображения в чем может быть проблема? Буду рад любым идеям Удалось решить проблему? Тоже самое появляется. В Job работает нормально, из EP та же ошибка.(запускается через menuitem out) Ошибка при вызове в WinApi::getOSVersion() X++: client static public container getOSVersion() { #define.OSVERSIONINFOSIZE(276) // includes 128 TCHARs DLL dll; DLLFunction dllFunction; Binary binary; ; dll = new DLL(#KernelDLL); dllFunction = new DLLFunction(dll,'GetVersionExW'); binary = new Binary(#OSVERSIONINFOSIZE); binary.dWord(0,#OSVERSIONINFOSIZE); dllFunction.arg(ExtTypes::Pointer); dllFunction.returns(ExtTypes::Byte); dllFunction.call(binary); // здесь валится return [binary.dWord(4),binary.dWord(8),binary.dWord(16)]; } X++: #define.Win98Platform(1) public void makeReportRun(ReportName reportName = this.lastValueElementName()) { Args args; Report report; [B]if (conpeek(WinAPI::getOSVersion(), 3) > #Win98Platform)[/B] { super(reportName); return; } // Running under Windows 98 or prior OS version args = new Args(reportName); if (! reportRun || reportRun.name() != reportName) { args.caller(this); reportRun = SalesPurchReport_RU::newSysReportRun(args); } report = reportRun.report(); report.interactive(false); queryNextUniqueId = report.query().nextUniqueId(); treeQueryVersion = report.query().version(); } Что делать с этим? Как решили проблему? DAX2009RU8 SP2010Sp1 Последний раз редактировалось mazzy; 08.11.2016 в 21:08. Причина: оформил xpp-код |
|
09.11.2016, 09:22 | #5 |
Участник
|
Цитата:
Сообщение от TDV
Доброго времени суток,
Удалось решить проблему? Тоже самое появляется. В Job работает нормально, из EP та же ошибка.(запускается через menuitem out) Ошибка при вызове в WinApi::getOSVersion() X++: client static public container getOSVersion() { #define.OSVERSIONINFOSIZE(276) // includes 128 TCHARs DLL dll; DLLFunction dllFunction; Binary binary; ; dll = new DLL(#KernelDLL); dllFunction = new DLLFunction(dll,'GetVersionExW'); binary = new Binary(#OSVERSIONINFOSIZE); binary.dWord(0,#OSVERSIONINFOSIZE); dllFunction.arg(ExtTypes::Pointer); dllFunction.returns(ExtTypes::Byte); dllFunction.call(binary); // здесь валится return [binary.dWord(4),binary.dWord(8),binary.dWord(16)]; } X++: #define.Win98Platform(1) public void makeReportRun(ReportName reportName = this.lastValueElementName()) { Args args; Report report; [B]if (conpeek(WinAPI::getOSVersion(), 3) > #Win98Platform)[/B] { super(reportName); return; } // Running under Windows 98 or prior OS version args = new Args(reportName); if (! reportRun || reportRun.name() != reportName) { args.caller(this); reportRun = SalesPurchReport_RU::newSysReportRun(args); } report = reportRun.report(); report.interactive(false); queryNextUniqueId = report.query().nextUniqueId(); treeQueryVersion = report.query().version(); } Что делать с этим? Как решили проблему? DAX2009RU8 SP2010Sp1 |
|
09.11.2016, 13:24 | #6 |
Участник
|
Цитата:
Под ней Job запускали или под собой?- пробовал и под ней, все работает в приложении Акс. Может принтер ей настроить? - экспорт идет в PDF в FILE, зачем принтер? Под AOS'ом пробовали запустить? - не очень понял, пожалуйста можете уточнить как это сделать? На сервере Работает код? - сам код запускающий printjob выполняется на в class(runon Client) так так формирование отчета Report(AX) из класса да и еще который содержит Blob Image( с blob image не выполняется на сервере в 2009, был фикс но он не работает), запуск класса возможно только на клиенте(runon client). Если запускать class на сервере(runon server), то отчет выводиться на экран несмотря на то что настройки стоят в File PDF, а если запустить тоже самое (class) на клиенте, то все выводиться в pdf файл, но только если запускать из приложения Акс, а не в EP. в EP выкидывает на getVersionOS Пока пришлось другими способами выкрутиться. |
|
09.11.2016, 13:40 | #7 |
Участник
|
|
|
09.11.2016, 14:00 | #8 |
Участник
|
|
|
10.11.2016, 15:14 | #9 |
Участник
|
Привет,
я в методе makeReportRun убрал все, оставил только super(reportName); остальное там ни к чему, у нас во всяком случае никто не юзал винду младше 98-й |
|
10.11.2016, 15:25 | #10 |
Участник
|
Цитата:
Добрый день! Повезло что заработало, я пробовал также, но там дальше ошибка вылетает с очень понятным инфорлогом "%d" . Дальше уже не стал копать другим способом по БП сделал. Спасибо! |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|