Zum Inhalt

Source-Code-basierte Speicherung von Dokumenten

Document Central kann mit Code erweitert werden, um Dokumente aus einem BLOB programmgesteuert in Document Central hochzuladen. Auf diese Weise ist es möglich, während des Druckvorgangs eines Berichts oder beim Buchen bzw. Umwandeln eines Dokuments automatisch einen Document Central Barcode zu erzeugen und hinzuzufügen.

Die folgenden Anforderungen müssen erfüllt sein:

  • Document Central muss lizenziert sein.
  • CORE muss in der Erweiterung als Referenz verfügbar sein.
  • Document Central muss in der Erweiterung als Referenz vorhanden sein.

Hinzufügen von Eingangs-Dokumenten

Zum Hinzufügen von Dokumenten in die Eingangs-Liste können 2 Funktionen im "SIM_DI Upload Management" verwendet werden: AddInboundDocumentFromExternal & AddInboundDocumentFromSilentUpload.

AddInboundDocumentFromSilentUpload

Var Name Datentyp Untertyp Länge Beschreibung
Nein Filename Text Der ursprüngliche Dateiname des Dokuments
Nein Base64File Text Die Datei als Base64-String
Nein InboundListCode Code 20 Code der Eingangs-Liste
Nein StatusCheckText Text Statuscheck
Nein Recordref RecordRef Die Datensatz-Referenz, zu der das Dokument hochgeladen werden muss.
Nein ParamContentTypeText Text Der Text des Content-Typs
Nein InfoTagText Text Infotag
Nein EnumSIMDIInboundDocSource Enum "SIM_DI Inbound Doc Source" Der Quellenstatus
Nein OriginText Text Ursprungstext
Show example code
AL
var
    SalesHeader: Record "Sales Header";
    UploadMgt: Codeunit "SIM_DI Upload Mgt";
    FileManagement: Codeunit "File Management";
    Base64Convert: Codeunit "Base64 Convert";
    TempBlob: Codeunit "Temp Blob";
    RecordReference: RecordRef;
    InStr: InStream;
    Filename: Text;
    Base64File: Text;
    AllFilesFilterTxt: Label '*.*', Locked = true;
    AllFilesDescriptionTxt: Label 'All Files (*.*)|*.*', Comment = '{Split=r''\|''}{Locked=s''1''}';
    DialogCaptionTxt: Label 'Choose Upload File';
begin
    Filename := FileManagement.BLOBImportWithFilter(TempBlob, DialogCaptionTxt, '', AllFilesDescriptionTxt, AllFilesFilterTxt);
    Filename := FileManagement.GetFileName(Filename);
    if Filename = '' then exit;

    Clear(InStr);
    TempBlob.CreateInStream(InStr);
    Base64File := Base64Convert.ToBase64(InStr);

    SalesHeader.Reset();
    SalesHeader.FindFirst();
    RecordReference.GetTable(SalesHeader);

    UploadMgt.AddInboundDocumentFromSilentUpload(
        Filename,                                       // ParamFileNameText
        Base64File,                                     // ParamBase64Text
        'INBOUND-LIST',                                 // ParamInboundListCode
        '',                                             // ParamStatusCheckText
        RecordReference,                                // ParamRecordRef
        'INVOICE',                                      // ParamContentTypeText
        '',                                             // ParamInfoTagText
        Enum::"SIM_DI Inbound Doc Source"::Upload,      // ParamEnumSIMDIInboundDocSource
        UserId()                                        // ParamOriginText
    );
end;

AddInboundDocumentFromExternal

Var Name Datentyp Untertyp Länge Beschreibung
Nein ParamFileNameText Text Der ursprüngliche Dateiname des Dokuments
Nein ParamBase64Text Text Die Datei als Base64-String
Nein ParamInboundListCode Code 20 Code der Eingangs-Liste
Nein ParamMetadataJsonText Text Metadaten als JSON-Zeichenkette
Nein ParamRecordId RecordId Die Datensatz-ID, mit der das Dokument verknüpft werden soll
Nein ParamContentTypeText Text Der Text des Inhaltstyps
Nein ParamDocumentLibraryCode Code 20 Code der Dokumentbibliothek
Nein ParamInfoTagText Text Infotag
Nein ParamEnumSIMDIInboundDocSource Enum "SIM_DI Inbound Doc Source" Die Quelle des Dokuments
Show example code
AL
var
    SalesHeader: Record "Purchase Header";
    UploadMgt: Codeunit "SIM_DI Upload Mgt";
    FileManagement: Codeunit "File Management";
    Base64Convert: Codeunit "Base64 Convert";
    TempBlob: Codeunit "Temp Blob";
    InStr: InStream;
    Filename: Text;
    Base64File: Text;
    MetadataJsonText: Text;
    MetadataJsonObject: JsonObject;
    AllFilesFilterTxt: Label '*.*', Locked = true;
    AllFilesDescriptionTxt: Label 'All Files (*.*)|*.*', Comment = '{Split=r''\|''}{Locked=s''1''}';
    DialogCaptionTxt: Label 'Choose Upload File';
begin
    Filename := FileManagement.BLOBImportWithFilter(TempBlob, DialogCaptionTxt, '', AllFilesDescriptionTxt, AllFilesFilterTxt);
    Filename := FileManagement.GetFileName(Filename);
    if Filename = '' then exit;

    Clear(InStr);
    TempBlob.CreateInStream(InStr);
    Base64File := Base64Convert.ToBase64(InStr);

    MetadataJsonObject.Add('dmssalesinvoiceno', 'PI-10000');
    MetadataJsonObject.Add('dmscustomerno', 'Adatum Corporation');
    MetadataJsonText := Format(MetadataJsonObject); // Format or other Extraction Methods

    SalesHeader.Get(SalesHeader."Document Type"::Invoice, 'PI-10000');

    UploadMgt.AddInboundDocumentFromExternal(
        Filename,                                       // ParamFileNameText
        Base64File,                                     // ParamBase64Text
        'INBOUND-LIST',                                 // ParamInboundListCode
        MetadataJsonText,                               // ParamMetadataJsonText - Can also be an Empty Text
        SalesHeader.RecordId(),                         // ParamRecordId - Necessary if the Assignment Method is Record Id
        'INVOICE',                                      // ParamContentTypeText
        'DOC-LIB-SALESINV',                             // ParamDocumentLibraryCode
        '',                                             // ParamInfoTagText
        Enum::"SIM_DI Inbound Doc Source"::Upload       // ParamEnumSIMDIInboundDocSource
    );
end;