我正在尝试打印单击按钮上的销售确认报告,我已在Microsoft Dynamics AX 2009中的“销售订单明细”表单中添加该按钮。在该按钮的单击事件中,我编写了以下代码:
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
哈龙
答案 0 :(得分:1)
由于您没有向任何打印机发送引用,因此必须使用默认打印机,这可能是Microsoft XPS或某些支持显示的打印机。
我必须将打印机内容发送到报告(SalesInvoice)并添加一些代码以嗅出任何已发送的打印机设置。否则,报告将使用适用于该类型报告的任何打印机设置。让它工作使我能够传递各种打印机设备,如电子邮件,PDF等...: - )
答案 1 :(得分: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++;
}
}
通过这段代码,我每次直接打印机都会调用Thrice(变量maxReports)报告。
答案 2 :(得分:1)
如果您不知道用户已将设备设置为默认打印机,则它将始终打印到默认打印机。如果您要将默认设置打印到屏幕(即使您选择了Print Medium :: Printer),它仍将进入屏幕。我认为你应该选择PrintMedium :: Screen并让它总是进入屏幕以便用户可以选择打印机,否则他们可能不知道打印报告的位置(我有一些用户有奇怪的选择作为他们的默认打印机,这可能是整个建筑物)。