You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过代码在Business Central中添加自定义报表布局

代码实现报表布局上传至Custom Report Layout

完全可行,Business Central允许通过AL代码直接操作Report Layout系统表(表ID 9650)来完成自定义报表布局的上传或更新,无需手动在界面操作。

核心实现思路

通过操作Report Layout表,将报表布局文件的二进制内容写入该表的Content字段,并配置报表ID、布局名称、布局类型等关键信息即可。

代码示例

以下是一个实现该功能的代码单元示例,包含布局上传和本地文件读取的逻辑:

codeunit 50100 "Upload Custom Report Layout"
{
    // 上传/更新报表布局
    procedure UploadLayoutToReport(ReportID: Integer; LayoutName: Text; LayoutType: Option RDLC,Word; LayoutContent: BigInteger)
    var
        ReportLayout: Record "Report Layout";
    begin
        // 检查目标布局是否已存在:存在则更新,不存在则新建
        if ReportLayout.Get(ReportID, LayoutName) then begin
            ReportLayout."Layout Type" := LayoutType;
            ReportLayout.Content := LayoutContent;
            ReportLayout.Modify();
        end else begin
            ReportLayout.Init();
            ReportLayout."Report ID" := ReportID;
            ReportLayout.Name := LayoutName;
            ReportLayout."Layout Type" := LayoutType;
            ReportLayout.Content := LayoutContent;
            ReportLayout.Insert();
        end;
        Message('报表布局已成功上传/更新!');
    end;

    // 辅助方法:读取本地布局文件为二进制内容
    procedure ReadLocalFileToBinary(FilePath: Text): BigInteger
    var
        InStream: InStream;
        File: File;
        FileContent: BigInteger;
    begin
        if not File.Exists(FilePath) then
            Error('指定文件不存在:%1', FilePath);

        File.Open(FilePath);
        File.CreateInStream(InStream);
        InStream.Read(FileContent);
        File.Close();
        exit(FileContent);
    end;
}

使用方式

在需要上传布局的地方调用上述代码单元即可,示例如下:

var
    UploadLayout: Codeunit "Upload Custom Report Layout";
    FileBinary: BigInteger;
begin
    // 读取本地RDLC布局文件
    FileBinary := UploadLayout.ReadLocalFileToBinary('C:\CustomReportLayout.rdlc');
    // 上传到指定报表(这里报表ID为50100,布局名称自定义)
    UploadLayout.UploadLayoutToReport(50100, '自定义销售报表布局', ReportLayout."Layout Type"::RDLC, FileBinary);
end;

注意事项

  • 权限配置:需确保代码拥有Report Layout表的读写权限,可通过代码单元的Permissions属性声明,或在权限集中配置。
  • 云环境适配:如果是云版Business Central,读取本地文件的方法不适用,需改为从Blob存储、API接口获取布局文件的二进制内容。
  • 布局类型匹配:RDLC格式文件对应RDLC类型,Word格式对应Word类型,需严格匹配否则布局无法正常使用。

内容的提问来源于stack exchange,提问作者BerryTan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 04:10:59