【问题标题】:Read Blob to Text in Business Central Report Extension在 Business Central 报表扩展中读取 Blob 到文本
【发布时间】:2021-02-18 11:10:58
【问题描述】:

我正在为 Business Central 创建一个报告,即采购订单报告。采购订单页面扩展为添加工作描述,这是一种 blob 数据类型。我已将 blob 字段添加到我的报告扩展中,现在我将 Blob 转换为文本,就像在我的页面中看到的那样。示例:“这是一个测试工作描述”。我相信我必须使用 InStream 然后阅读。有人可以提供示例代码来帮助我将其作为文本添加到我的报告中吗?

【问题讨论】:

    标签: visual-studio-code nav dynamics-al


    【解决方案1】:

    您可以在 Microsoft 文档中找到很好的示例: Write, WriteText, Read, and ReadText Method Behavior for Line Endings and Zero Terminators

    但我认为这是你需要的:

    procedure GetWorkDescription (PurchHeader: Record "Purchase Header")WorkDescription: Text
    var
        MyInStream: InStream;
    
    begin
        Clear(WorkDescription);
        PurchHeader.Calcfields("Work Description");
        If PurchHeader."Work Description".HasValue() then begin
            PurchHeader."Work Description".CreateInStream(MyInStream);
            MyInStream.Read(WorkDescription);
        end;
    end;
    

    【讨论】:

    • 我第一次在 StackOverflow 上发现了一些与 NAV/BC 相关的东西,并且它第一次尝试就起作用了。谢谢!:)
    【解决方案2】:

    这个例子完美地运行了 Job!我只是想添加它。在我的购买标题中,我添加了以下代码:

    column(WorkDescription; GetWorkDescription())
                {
                }
    

    然后在 OnPreReport() 末尾添加:

            WorkDescription: Text;
    

    然后在最后添加了程序:

        procedure GetWorkDescription(): Text
        var
            TypeHelper: Codeunit "Type Helper";
            InStream: InStream;
        begin
            "Purchase Header".CalcFields("Purchase Header"."Work Description");
            "Purchase Header".Work Description".CreateInStream(InStream, TEXTENCODING::UTF8);
            exit(TypeHelper.ReadAsTextWithSeparator(InStream, TypeHelper.LFSeparator));
        end;
    

    在您的示例代码的帮助下,我能够生成实际的文本!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      • 1970-01-01
      • 2021-03-31
      • 2020-10-09
      相关资源
      最近更新 更多