1

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

4

2 回答 2

4

您可以在 Microsoft 文档中找到很好的示例: Write、WriteText、Read 和 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;
于 2020-11-09T13:09:12.750 回答
1

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

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;

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

于 2020-11-11T00:09:08.097 回答