2

Microsoft Dynamics AX 2009 の Sales Order Detail フォームに追加したボタン クリックで販売確認レポートを印刷しようとしています。そのボタンのクリック イベントで、次のコードを記述しました。

void clicked()
{
    Args                args;
    ReportRun           reportRun;
    SalesFormLetter     salesFormLetter;
    PrintJobSettings    printJobSettings;
    CustConfirmJour     custConfirmJour;
    RecordSortedList    list                = new RecordSortedList(55);
    SalesTable          salesTableUpdate;
    ;

    SELECT firstonly custConfirmJour order by ConfirmID desc where custConfirmJour.SalesId == salesTable.SalesId ;

    list.ins(custConfirmJour);

    args = new Args(ReportStr(SalesConfirm));


    printJobSettings = new PrintJobSettings();
    printJobSettings.SetTarget(PrintMedium::Printer);
    printJobSettings.suppressScalingMessage(true);

    salesFormLetter  = new SalesFormLetter_Confirm(true);
    salesFormLetter.updatePrinterSettingsFormLetter(printJobSettings.packPrintJobSettings());

    args.designName("Standard");
    args.caller(salesFormletter);
    args.parmEnum(PrintCopyOriginal::Original);
    args.parmEnumType(enumnum(PrintCopyOriginal));
    args.object(list);

    reportRun = new ReportRun(args);
    reportRun.setTarget(PrintMedium::Printer);
    reportRun.init();
    reportRun.run();
}

レポートをプリンターに直接送信する代わりに、印刷プレビューが表示されるという問題を除いて、コードは正常に実行されています。

このコードの何が問題なのか、どなたか教えていただければ幸いです。

Rgds

ハルーン

4

3 に答える 3

1

これを試して:

public void run()
{
     Args               args;
     ReportRun          report;
     str                printer;
     PrintJobSettings   pjs;
;
    args = new Args(reportstr("PwC_ExciseInvoice_Sales"));
    counter = 1;
    pjs = new printJobSettings();


    while(counter <= maxReports)
    {
        args.parm(int2str(counter));
        args.record(custInvoiceJour);
        report = new ReportRun(args);
        pjs.setTarget(PrintMedium::Printer);
        report.setTarget(PrintMedium::Printer);
        report.init();
        report.run();

        counter++;
    }

}

このコードを使用して、レポートが直接プリンターに送信されるたびに、レポートを3回(変数maxReports)呼び出しています。

于 2011-01-05T08:48:00.130 に答える
1

プリンターへの参照を送信していないため、デフォルトのプリンターを使用する必要があります。これは、Microsoft XPS またはディスプレイ対応プリンターである可能性が非常に高くなります。

プリンター設定をレポート (SalesInvoice) に送信し、送信されたプリンター設定を盗聴するコードを追加する必要がありました。それ以外の場合、レポートは、そのタイプのレポートに適用されるプリンター設定を使用します。それを機能させることで、電子メール、PDFなどのさまざまなプリンター設定を渡すことができました... :-)

于 2010-10-05T20:17:23.337 に答える
1

ユーザーが既定のプリンターとして設定したデバイスがわからない場合は、常に既定のプリンターに印刷されます。デフォルト設定が画面に出力する場合 (Print Medium::Printer を選択した場合でも)、画面に出力されます。PrintMedium::Screen を選択し、常に画面に移動して、ユーザーがプリンターを選択できるようにする必要があると思います。そうしないと、レポートが印刷された場所がわからない可能性があります (デフォルトプリンターとして奇妙な選択をしているユーザーがいますが、建物の向こう側にある場合があります)。

于 2011-05-05T14:29:40.570 に答える