替换报表
要替换报表,您可以创建一种方法并订阅 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 平台在用户已指定自定义报表布局类型(该类型将呈现为应用程序代码中的项目)的情况下引发。