Ga naar inhoud

Op basis van broncode opgeslagen documenten

Document Central kan worden uitgebreid met code die het mogelijk maakt om documenten van een BLOB naar Document Central te uploaden via code. Deze aanpak maakt het mogelijk om automatisch een Document Central-streepjescode te genereren en toe te voegen wanneer een rapport wordt afgedrukt of wanneer een document wordt gepost of geconverteerd.

De volgende vereisten moeten worden vervuld:

  • De Document Central-module moet gelicentieerd zijn.
  • CORE moet beschikbaar zijn in de extensie als referentie.
  • Document Central moet aanwezig zijn in de extensie als referentie.

Inkomende Documenten Toevoegen

Voor het toevoegen van documenten aan de Inkomende lijst kunnen 2 functies in de "SIM_DI Upload Mgt" worden gebruikt: AddInboundDocumentFromExternal & AddInboundDocumentFromSilentUpload.

Wanneer welke functie te gebruiken

Scenario Te gebruiken functie
Een document wordt automatisch gegenereerd en geüpload tijdens een BC-proces (bijv. rapportafdruk, documentposting, documentconversie) AddInboundDocumentFromSilentUpload
De upload wordt geactiveerd vanuit een extern systeem of integratie (bijv. via API, vanuit een andere extensie, vanuit Document Management) AddInboundDocumentFromExternal
Het doelrecord mag nog niet zijn vastgelegd in de database op het moment van uploaden (bijv. tijdens OnAfterInsert, tijdens posting) AddInboundDocumentFromSilentUpload
Het doelrecord is al volledig vastgelegd en de RecordId is bekend AddInboundDocumentFromExternal
Veldmapping / toewijzingsmetadata moet worden doorgegeven als JSON AddInboundDocumentFromExternal
Een specifieke Documentbibliotheek moet worden ingesteld voor het geüploade document AddInboundDocumentFromExternal
De initiële status (Open / In behandeling / Gearchiveerd) moet expliciet worden gecontroleerd AddInboundDocumentFromSilentUpload
De gebruiker of het proces dat de upload heeft geactiveerd, moet worden gevolgd (Oorsprong) AddInboundDocumentFromSilentUpload

Samenvatting: Gebruik AddInboundDocumentFromSilentUpload voor geautomatiseerde achtergronduploads die afkomstig zijn vanuit Business Central (bijv. geactiveerd door posting of afdrukken). Gebruik AddInboundDocumentFromExternal bij integratie van buiten BC of wanneer metadata-gedreven toewijzing of een Documentbibliotheekcode vereist is.


AddInboundDocumentFromSilentUpload

Var Naam Gegevenstype Subtype Lengte Beschrijving
Nee Bestandsnaam Tekst De oorspronkelijke bestandsnaam van het document
Nee Base64Bestand Tekst Het bestand als een base64-string
Nee InkomendeLijstCode Code 20 Code van de Inkomende lijst
Nee StatusControleTekst Tekst Statuscontrole
Nee Recordref RecordRef De gegevensrecordreferentie waaraan het document moet worden geüpload.
Nee ParamContentTypeTekst Tekst De tekst van het contenttype
Nee InfoTagTekst Tekst Infotag
Nee EnumSIMDIInboundDocSource Enum "SIM_DI Inbound Doc Source" De bronstatus
Nee OorsprongTekst Tekst OorsprongTekst
Toon voorbeeldcode
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;
    Bestandsnaam: Tekst;
    Base64Bestand: Tekst;
    AlleBestandenFilterTxt: Label '*.*', Locked = true;
    AlleBestandenBeschrijvingTxt: Label 'Alle Bestanden (*.*)|*.*', Comment = '{Split=r''\|''}{Locked=s''1''}';
    DialoogTitelTxt: Label 'Kies Upload Bestand';
begin
    Bestandsnaam := FileManagement.BLOBImportWithFilter(TempBlob, DialoogTitelTxt, '', AlleBestandenBeschrijvingTxt, AlleBestandenFilterTxt);
    Bestandsnaam := FileManagement.GetFileName(Bestandsnaam);
    if Bestandsnaam = '' then exit;

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

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

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

AddInboundDocumentFromExternal

Var Naam Gegevenstype Subtype Lengte Beschrijving
Nee ParamFileNameTekst Tekst De oorspronkelijke bestandsnaam van het document
Nee ParamBase64Tekst Tekst Het bestand als een base64-string
Nee ParamInboundListCode Code 20 Code van de Inkomende lijst waaraan het document moet worden toegevoegd
Nee ParamMetadataJsonTekst Tekst Metadata als een JSON-string
Nee ParamRecordId RecordId De record-ID waaraan het document moet worden gekoppeld
Nee ParamContentTypeTekst Tekst De tekst van het contenttype
Nee ParamDocumentLibraryCode Code 20 Code van de Documentbibliotheek
Nee ParamInfoTagTekst Tekst Een Infotag
Nee ParamEnumSIMDIInboundDocSource Enum "SIM_DI Inbound Doc Source" De bron van het Document
Toon voorbeeldcode
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;
    Bestandsnaam: Tekst;
    Base64Bestand: Tekst;
    MetadataJsonTekst: Tekst;
    MetadataJsonObject: JsonObject;
    AlleBestandenFilterTxt: Label '*.*', Locked = true;
    AlleBestandenBeschrijvingTxt: Label 'Alle Bestanden (*.*)|*.*', Comment = '{Split=r''\|''}{Locked=s''1''}';
    DialoogTitelTxt: Label 'Kies Upload Bestand';
begin
    Bestandsnaam := FileManagement.BLOBImportWithFilter(TempBlob, DialoogTitelTxt, '', AlleBestandenBeschrijvingTxt, AlleBestandenFilterTxt);
    Bestandsnaam := FileManagement.GetFileName(Bestandsnaam);
    if Bestandsnaam = '' then exit;

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

    MetadataJsonObject.Add('dmssalesinvoiceno', 'PI-10000');
    MetadataJsonObject.Add('dmscustomerno', 'Adatum Corporation');
    MetadataJsonTekst := Format(MetadataJsonObject); // Format of andere Extractiemethoden

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

    UploadMgt.AddInboundDocumentFromExternal(
        Bestandsnaam,                                       // ParamFileNameText
        Base64Bestand,                                     // ParamBase64Text
        'INBOUND-LIST',                                 // ParamInboundListCode
        MetadataJsonTekst,                               // ParamMetadataJsonText - Kan ook een lege tekst zijn
        SalesHeader.RecordId(),                         // ParamRecordId - Nodig als de toewijzingsmethode Record Id is
        'INVOICE',                                      // ParamContentTypeText
        'DOC-LIB-SALESINV',                             // ParamDocumentLibraryCode
        '',                                             // ParamInfoTagText
        Enum::"SIM_DI Inbound Doc Source"::Upload       // ParamEnumSIMDIInboundDocSource
    );
end;