Aller au contenu

Stockage de documents basé sur le code source

Document Central peut être étendu avec du code permettant de télécharger des documents depuis un BLOB vers Document Central via du code. Cette approche permet de générer et d'ajouter automatiquement un code-barres Document Central lors de l'impression d'un rapport ou lors de la comptabilisation ou de la conversion d'un document.

Les conditions suivantes doivent être remplies :

  • Le module Document Central doit être licencié.
  • CORE doit être disponible dans l'extension en tant que référence.
  • Document Central doit être présent dans l'extension en tant que référence.

Ajout de documents entrants

Pour ajouter des documents à la liste entrante, 2 fonctions dans "SIM_DI Upload Mgt" peuvent être utilisées : AddInboundDocumentFromExternal et AddInboundDocumentFromSilentUpload.

AddInboundDocumentFromSilentUpload

Var Nom Type de données Sous-type Longueur Description
Non Filename Text Le nom de fichier original du document
Non Base64File Text Le fichier sous forme de chaîne base64
Non InboundListCode Code 20 Code de la liste de réception
Non StatusCheckText Text Vérification de statut
Non Recordref RecordRef La référence d'enregistrement vers laquelle le document doit être téléchargé
Non ParamContentTypeText Text Le texte du type de contenu
Non InfoTagText Text Balise d'information
Non EnumSIMDIInboundDocSource Enum "SIM_DI Inbound Doc Source" Le statut de la source
Non OriginText Text Texte d'origine
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 Nom Type de données Sous-type Longueur Description
Non ParamFileNameText Text Le nom de fichier original du document
Non ParamBase64Text Text Le fichier sous forme de chaîne base64
Non ParamInboundListCode Code 20 Code de la liste de réception
Non ParamMetadataJsonText Text Métadonnées sous forme de chaîne JSON
Non ParamRecordId RecordId L'ID d'enregistrement auquel le document doit être lié
Non ParamContentTypeText Text Le texte du type de contenu
Non ParamDocumentLibraryCode Code 20 Code de la bibliothèque de documents
Non ParamInfoTagText Text Balise d'information
Non ParamEnumSIMDIInboundDocSource Enum "SIM_DI Inbound Doc Source" La source du document
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;