2011-12-02 109 views
1

我试图自动将打印清单直接打印到打印机。它已被选中。这是一个打印它的作业,但它一直持续到屏幕而不是打印机。将打印清单重新打印到打印机,而不是通过X ++屏幕

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(); 
} 

回答

2

我想出了答案。我不得不添加下面这行:

printJobSettings.lockDestinationProperties(true); 

这强制它打印机。

+0

这解决了我的问题,当时正在将打印代码作为批处理运行,因此无法将其显示到屏幕上,这是它失败的原因。 谢谢 – Michael

1

你可以改变你的代码中使用OriginalPrint这样的:

args.parmEnum(PrintCopyOriginal::OriginalPrint); 

问题在于阶级FormLetterReport的方法loadPrintSettings重写目标筛选当您使用原装或OriginalCopy。

+0

这也适用于一种方法。我正在做一些时髦的印刷品,所以这并不总是奏效。尽管感谢你给了你一个满意的答案! –