2011-12-02 76 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

這也適用於一種方法。我正在做一些時髦的印刷品,所以這並不總是奏效。儘管感謝你給了你一個滿意的答案! –