Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Axapta 将销售报价报告打印为PDF AX 2009_Axapta_Dynamics Ax 2009_Ax - Fatal编程技术网

Axapta 将销售报价报告打印为PDF AX 2009

Axapta 将销售报价报告打印为PDF AX 2009,axapta,dynamics-ax-2009,ax,Axapta,Dynamics Ax 2009,Ax,我目前在AX 2009 SP1汇总7上。当我的方法运行时,我试图创建一个PDF,将报价Id从CustQuotationJour表发送到SalesQuotation报告 该方法工作正常,但报告将发送到打印预览屏幕,而不是创建PDF。我假设它的SalesQuotence报告将我的打印设置重置回屏幕。我的猜测在fetch方法中,但我不应该修改它,对吗 是否有我可能缺少的其他打印设置? 提前谢谢 ReportRun salesQuotationReport; Args

我目前在AX 2009 SP1汇总7上。当我的方法运行时,我试图创建一个PDF,将报价Id从CustQuotationJour表发送到SalesQuotation报告

该方法工作正常,但报告将发送到打印预览屏幕,而不是创建PDF。我假设它的SalesQuotence报告将我的打印设置重置回屏幕。我的猜测在fetch方法中,但我不应该修改它,对吗

是否有我可能缺少的其他打印设置? 提前谢谢

ReportRun                   salesQuotationReport;
Args                        args = new Args();
PrintJobSettings            printJobSettings;
CustQuotationJour           custQuotationJour;
;

custQuotationJour = CustQuotationJour::findFromSalesQuotationQuotation(_quotationId);


args.name(reportStr(SalesQuotation));
args.record(custQuotationJour);
salesQuotationReport = new ReportRun(args);
salesQuotationReport.init();

printJobSettings = salesQuotationReport.printJobSettings();
printJobSettings.setTarget(PrintMedium::File);
printJobSettings.preferredTarget(PrintMedium::File);
printJobSettings.format(PrintFormat::PDF);
printJobSettings.preferredFileFormat(PrintFormat::PDF);
printJobSettings.fileName(_path);

salesQuotationReport.unpackPrintJobSettings(printJobSettings.packPrintJobSettings());
salesQuotationReport.run();

我已经在AX 2012上进行了类似的销售确认,除了以下工作:

该方法在CustComfirmJour表中,因此这是指已确认的记录

FileName saveAs(FileName fileName)
{
    SalesConfirmController      salesConfirmController;
    SalesConfirmContract        salesConfirmContract;
    SRSPrintDestinationSettings printSettings;
    Args                        args = new Args();
    ;
    args.record(this);
    salesConfirmController = new SalesConfirmController();
    salesConfirmController.parmReportName(ssrsReportStr(SalesConfirm,Report));
    salesConfirmController.parmArgs(args);
    salesConfirmController.parmReportContract().parmRdlContract().parmLanguageId(this.LanguageId);
    salesConfirmContract = salesConfirmController.parmReportContract().parmRdpContract();
    salesConfirmContract.parmRecordId(this.RecId);
    printSettings = salesConfirmController.parmReportContract().parmPrintSettings();
    printSettings.printMediumType(SRSPrintMediumType::File);
    printSettings.overwriteFile(true);
    printSettings.fileFormat(SRSReportFileFormat::PDF);
    fileName = printSettings.fileName(fileName);
    salesConfirmController.runReport();
    return fileName;
}
这在AX 2009中不起作用

在这里,您的方法(如中所述)应该有效,但不能

FileName saveAs(FileName fileName)
{
    ReportRun                   report;
    PrintJobSettings            printSettings;
    Args                        args = new Args(reportStr(SalesConfirm));
    ;
    args.record(this);
    report = classfactory.reportRunClass(args);
    report.init();
    printSettings = report.printJobSettings();
    printSettings.setTarget(PrintMedium::File);
    printSettings.preferredTarget(PrintMedium::File);
    printSettings.format(PrintFormat::PDF);
    printSettings.preferredFileFormat(PrintFormat::PDF);
    printSettings.fileName(fileName);
    printSettings.lockDestinationProperties(true); //Did the trick!?!
    report.unpackPrintJobSettings(printSettings.packPrintJobSettings());
    report.run();
    return fileName;
}
要运行:

static void SalesConfirmSaveAs(Args _args)
{
    CustConfirmJour jour;
    select firstonly jour;
    jour.saveAs(@"V:\Temp\confirm.pdf");
}
输出进入屏幕

也许报告本身就是一团糟


更新:添加了printSettings.lockDestinationPropertiestrue;但是还没有测试。

我在AX 2012上也做了类似的销售确认,除了这个:

该方法在CustComfirmJour表中,因此这是指已确认的记录

FileName saveAs(FileName fileName)
{
    SalesConfirmController      salesConfirmController;
    SalesConfirmContract        salesConfirmContract;
    SRSPrintDestinationSettings printSettings;
    Args                        args = new Args();
    ;
    args.record(this);
    salesConfirmController = new SalesConfirmController();
    salesConfirmController.parmReportName(ssrsReportStr(SalesConfirm,Report));
    salesConfirmController.parmArgs(args);
    salesConfirmController.parmReportContract().parmRdlContract().parmLanguageId(this.LanguageId);
    salesConfirmContract = salesConfirmController.parmReportContract().parmRdpContract();
    salesConfirmContract.parmRecordId(this.RecId);
    printSettings = salesConfirmController.parmReportContract().parmPrintSettings();
    printSettings.printMediumType(SRSPrintMediumType::File);
    printSettings.overwriteFile(true);
    printSettings.fileFormat(SRSReportFileFormat::PDF);
    fileName = printSettings.fileName(fileName);
    salesConfirmController.runReport();
    return fileName;
}
这在AX 2009中不起作用

在这里,您的方法(如中所述)应该有效,但不能

FileName saveAs(FileName fileName)
{
    ReportRun                   report;
    PrintJobSettings            printSettings;
    Args                        args = new Args(reportStr(SalesConfirm));
    ;
    args.record(this);
    report = classfactory.reportRunClass(args);
    report.init();
    printSettings = report.printJobSettings();
    printSettings.setTarget(PrintMedium::File);
    printSettings.preferredTarget(PrintMedium::File);
    printSettings.format(PrintFormat::PDF);
    printSettings.preferredFileFormat(PrintFormat::PDF);
    printSettings.fileName(fileName);
    printSettings.lockDestinationProperties(true); //Did the trick!?!
    report.unpackPrintJobSettings(printSettings.packPrintJobSettings());
    report.run();
    return fileName;
}
要运行:

static void SalesConfirmSaveAs(Args _args)
{
    CustConfirmJour jour;
    select firstonly jour;
    jour.saveAs(@"V:\Temp\confirm.pdf");
}
输出进入屏幕

也许报告本身就是一团糟


更新:添加了printSettings.lockDestinationPropertiestrue;但是还没有测试。

所以这里是我的评论转换成的答案

添加以下行

printSettings.lockDestinationPropertiestrue


这将防止报告中的任何代码覆盖您的打印设置。

因此,我的评论已转换为答案

添加以下行

printSettings.lockDestinationPropertiestrue


这将防止报告中的任何代码覆盖您的打印设置。

我非常确信这就是报告。fetch方法用于调整每个AX 2009报告的打印设置。特别是,下面的代码语句使我相信我提供的打印设置正在被丢弃。SalesFormletReport.loadPrintSettings custQuotationJour、salesQuotationTable、custQuotationJour.LanguageId;我认为是这样的,但我在调试时没有看到它。我正在考虑是否有办法让报表知道保留我的设置。请尝试添加“printSettings.lockDestinationPropertiestrue;”这可能会阻止报告本身覆盖打印设置。我感谢你们的努力,非常感谢@AnthonyBlake在我添加它工作并创建PDF文件时。这绝对是我的一天。我希望有一种方法可以将评论标记为答案。我很有信心这就是报告。fetch方法用于调整每个AX 2009报告的打印设置。特别是,下面的代码语句使我相信我提供的打印设置正在被丢弃。SalesFormletReport.loadPrintSettings custQuotationJour、salesQuotationTable、custQuotationJour.LanguageId;我认为是这样的,但我在调试时没有看到它。我正在考虑是否有办法让报表知道保留我的设置。请尝试添加“printSettings.lockDestinationPropertiestrue;”这可能会阻止报告本身覆盖打印设置。我感谢你们的努力,非常感谢@AnthonyBlake在我添加它工作并创建PDF文件时。这绝对是我的一天。希望有一种方法可以将评论标记为答案。谷歌搜索方法:谷歌搜索方法: