Axapta 将领料单重新打印到打印机上,而不是通过X++;
我正在尝试将拣货单直接自动打印到打印机上。它已经被挑选出来了。这是一个打印它的作业,但它一直在屏幕上,而不是打印机上Axapta 将领料单重新打印到打印机上,而不是通过X++;,axapta,dynamics-ax-2009,x++,Axapta,Dynamics Ax 2009,X++,我正在尝试将拣货单直接自动打印到打印机上。它已经被挑选出来了。这是一个打印它的作业,但它一直在屏幕上,而不是打印机上 static void JobReprintPickingList(Args _args) { Args args; ReportRun reportRun; SalesFormLetter salesFormLetter; PrintJobSettings printJobSettings; RecordSortedList list =
static void JobReprintPickingList(Args _args)
{
Args args;
ReportRun reportRun;
SalesFormLetter salesFormLetter;
PrintJobSettings printJobSettings;
RecordSortedList list = new RecordSortedList(tablenum(WMSPickingRoute));
WMSPickingRoute wmsPickingRoute = WMSPickingRoute::find('PkR 079256');
;
if(!wmsPickingRoute)
return;
list.ins(wmsPickingRoute);
args = new Args(ReportStr(WMSPickingList_OrderPick));
args.designName("Standard");
printJobSettings = new PrintJobSettings();
printJobSettings.deviceName('HP Universal Printing PCL 6');
printJobSettings.setTarget(PrintMedium::Printer);
printJobSettings.preferredTarget(PrintMedium::Printer);
salesFormLetter = new SalesFormLetter_PickingList(false);
salesFormLetter.updatePrinterSettingsFormLetter(printJobSettings.packPrintJobSettings());
args.caller(salesFormletter);
args.parmEnum(PrintCopyOriginal::Original);
args.parmEnumType(enumnum(PrintCopyOriginal));
args.object(list);
reportRun = new ReportRun(args);
reportRun.init();
reportRun.run();
}
您可以将代码更改为使用OriginalPrint,如下所示:
args.parmEnum(PrintCopyOriginal::OriginalPrint);
问题在于类FormletReport的loadPrintSettings方法,该方法在使用Original或OriginalCopy时覆盖屏幕目标。我找到了答案。我不得不加上这句话:
printJobSettings.lockDestinationProperties(true);
这将强制它以anway的方式打印。这也适用于一种方式。我正在做一些时髦的印刷工作,所以这不会一直奏效。给了你一票,谢谢!这解决了我的问题,将打印代码作为一个批处理运行,因此无法显示到屏幕上,这就是它失败的原因。谢谢