替换报表

已完成

要替换报表,您可以创建一种方法并订阅 OnAfterSubstituteReport 事件,如以下代码中所示。 OnSubstituteReport 方法将 ReportId 指定的报表替换为 NewReportId 参数指定的报表。

在以下示例中,客户 - 列表报表将替换为我的新客户 - 列表报表。

codeunit 50100 "Substitute Report"
{
    [EventSubscriber(ObjectType::Codeunit, Codeunit::ReportManagement, 'OnAfterSubstituteReport', '', false, false)]
    local procedure OnSubstituteReport(ReportId: Integer; var NewReportId: Integer)
    begin
        if ReportId = Report::"Customer - List" then
            NewReportId := Report::"My New Customer - List";
    end;
}

引发 OnAfterSubstituteReport 事件后,将调用事件订阅者方法并进行替换。

该事件名为 OnAfterSubstituteReport,以匹配 ReportManagement codeunit 中其他事件遵循的模式,但在进行替换之前将调用订阅者。

在以下情况下将引发 OnAfterSubstituteReport 事件:

  • 用户激活一项页面操作,而该操作运行要替换的报表,也就是将 RunObject属性设置为该报表。

  • 告诉我窗口调用报表。

  • 报表通过以下静态方法之一进行调用:

    • Run 方法

    • RunModal 方法

    • SaveAsHtml 方法

    • SaveAsXml 方法

    • SaveAsPdf 方法

    • SaveAsExcel 方法

    • SaveAsWord 方法

    • RunRequestPage 方法

    • Execute 方法

    • Print 方法

    • SaveAs 方法

codeunit 44 ReportManagement,包含您也可以订阅的事件:

  • OnAfterGetPrinterName

  • OnAfterDocumentPrintReady

  • OnAfterGetPaperTrayForReport

  • OnAfterGetPrinterName

  • OnAfterHasCustomLayout

  • OnAfterDocumentReady

  • OnAfterDocumentDownload

  • OnAfterSetupPrinters

  • OnCustomDocumentMergerex

  • OnAfterSubstituteReport

已添加新的业务事件,以便 AL 开发人员可以在已从报表请求页面生成文件或文件可供下载的情况下做出反应。

向 codeunit 44 ReportManagement 添加了三个新的业务事件:

  • OnAfterDocumentReady

  • OnAfterDocumentDownload

  • OnCustomDocumentMerger

OnAfterDocumentReady 事件由 Business Central 平台在已从报表请求页面安排生成单据且已准备就绪的情况下引发。

OnAfterDocumentDownload 事件由 Business Central 平台在用户通过代码或请求页面操作生成报表项目后引发。

OnCustomDocumentMerger 事件由 Business Central 平台在用户已指定自定义报表布局类型(该类型将呈现为应用程序代码中的项目)的情况下引发。