【问题标题】:Post a Report in a Sharepoint folder在 Sharepoint 文件夹中发布报告
【发布时间】:2022-11-17 06:56:27
【问题描述】:

当您单击一个操作时,我一直在通过 Business Central 创建一个文件夹的项目中工作。它工作正常,但现在我想在单击操作时将页面项目卡 (30) 中的报告发送到我在 Sharepoint 中的文件夹。我创建了一个程序来执行此操作,但问题是当我尝试在 Sharepoint 上打开报告 (PDF) 时,它说“看起来该文件没有我们可以向您展示的预览。” 这是我使用的程序。

 procedure UploadFile(AccessToken: Text; Url: Text; Item: Record Item): Boolean
    var
        Client: HttpClient;
        Headers: HttpHeaders;
        RequestMessage: HttpRequestMessage;
        ResponseMessage: HttpResponseMessage;
        RequestContent: HttpContent;
        ResponseText: Text;
        IsSucces: Boolean;
        Item_Vendor_Catalog: Report "Item/Vendor Catalog";
        ItemVendor: Record "Item Vendor";
        Json1: JsonObject;
        out: OutStream;
        ins: InStream;
        RecRef: RecordRef;
        TempBlob_lRec: Codeunit "Temp Blob";
        FileManagement_lCdu: Codeunit "File Management";
        Base64: Codeunit "Base64 Convert";
    begin

        Headers := Client.DefaultRequestHeaders();
        Headers.Add('Authorization', StrSubstNo('Bearer %1', AccessToken));
        Headers.Add('Accept', 'application/json;odata=nometadata');

        ItemVendor.Get(Item."Vendor No.", Item."No.");
        Item_Vendor_Catalog.SetTableView(ItemVendor);

        RequestMessage.SetRequestUri(Url);
        RequestMessage.Method('POST');

        TempBlob_lRec.CreateOutStream(out, TEXTENCODING::UTF8);
        RecRef.Get(ItemVendor.RecordId);
        Report.SaveAs(Report::"Item/Vendor Catalog", '', ReportFormat::Pdf, out);
        TempBlob_lRec.CreateInStream(ins, TEXTENCODING::UTF8);
        // ins.Read(out);

        // Message(Base64.ToBase64(ins));
        // Message('out ' + Format(out));
        // Message('ins ' + Format(ins));
        System.CopyStream(out, ins);

        RequestContent.WriteFrom(ins);
        RequestMessage.Content(RequestContent);

        if Client.Send(RequestMessage, ResponseMessage) then
            if ResponseMessage.IsSuccessStatusCode() then begin
                if ResponseMessage.Content.ReadAs(ResponseText) then
                    IsSucces := true;
            end else
                ResponseMessage.Content.ReadAs(ResponseText);
    end;

【问题讨论】:

    标签: sharepoint dynamics-business-central businesscentral


    【解决方案1】:

    我认为您的报告实际上并未生成。 我会添加一个变量 Parameters: Text 并进行以下更改

    Item_Vendor_Catalog.SetTableView(ItemVendor);
    Parameters := Item_Vendor_Catalog.RunRequestPage();
    ...
    Report.SaveAs(Report::"Item/Vendor Catalog", Parameters, ReportFormat::Pdf, out);
    

    您可以删除这行代码RecRef.Get(ItemVendor.RecordId);,我认为它应该可以工作。

    【讨论】:

      猜你喜欢
      • 2011-02-05
      • 1970-01-01
      • 2011-05-07
      • 1970-01-01
      • 2018-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多