Aller au contenu

Stockage de documents basé sur le code source

Document Central peut être étendu avec du code qui permet de télécharger des documents d'un BLOB vers Document Central via du code. Cette approche permet de générer et d'ajouter automatiquement un code-barres Document Central lorsqu'un rapport est imprimé ou lorsqu'un document est publié ou converti.

Les exigences suivantes doivent être respectées :

  • Le module Document Central doit être sous licence.
  • 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 des entrants, 2 fonctions dans le "SIM_DI Upload Mgt" peuvent être utilisées : AddInboundDocumentFromExternal & AddInboundDocumentFromSilentUpload.

Quand utiliser quelle fonction

Scénario Fonction à utiliser
Un document est généré et téléchargé automatiquement durant un processus BC (par exemple, impression de rapport, publication de document, conversion de document) AddInboundDocumentFromSilentUpload
Le téléchargement est déclenché depuis un système ou une intégration externe (par exemple, via API, depuis une autre extension, depuis la gestion documentaire) AddInboundDocumentFromExternal
L'enregistrement cible peut ne pas encore être engagé dans la base de données au moment du téléchargement (par exemple, durant OnAfterInsert, durant la publication) AddInboundDocumentFromSilentUpload
L'enregistrement cible est déjà entièrement engagé et l'RecordId est connu AddInboundDocumentFromExternal
Le mappage des champs / les métadonnées d'attribution doivent être passés en tant que JSON AddInboundDocumentFromExternal
Une Bibliothèque de Documents spécifique doit être définie pour le document téléchargé AddInboundDocumentFromExternal
Le statut initial (Ouvert / En attente / Archivé) doit être contrôlé explicitement AddInboundDocumentFromSilentUpload
L'utilisateur ou le processus qui a déclenché le téléchargement doit être suivi (Origine) AddInboundDocumentFromSilentUpload

Résumé : Utilisez AddInboundDocumentFromSilentUpload pour les téléchargements automatiques en arrière-plan qui proviennent de l'intérieur de Business Central (par exemple, déclenchés par une publication ou une impression). Utilisez AddInboundDocumentFromExternal lors de l'intégration depuis l'extérieur de BC ou lorsque l'attribution basée sur les métadonnées ou un code de Bibliothèque de Documents est requise.


AddInboundDocumentFromSilentUpload

Var Nom Type de données Sous-type Longueur Description
Non Filename Texte Le nom de fichier original du document
Non Base64File Texte Le fichier sous forme de chaîne base64
Non InboundListCode Code 20 Code de la liste des entrants
Non StatusCheckText Texte Vérification de statut
Non Recordref RecordRef La référence d'enregistrement à laquelle le document doit être téléchargé.
Non ParamContentTypeText Texte Le texte du type de contenu
Non InfoTagText Texte Tag d'information
Non EnumSIMDIInboundDocSource Enum "SIM_DI Inbound Doc Source" Le statut de la source
Non OriginText Texte Texte d'origine
Afficher le code d'exemple
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 'Tous les fichiers (*.*)|*.*', Comment = '{Split=r''\|''}{Locked=s''1''}';
    DialogCaptionTxt: Label 'Choisissez le fichier à télécharger';
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 Texte Le nom de fichier original du document
Non ParamBase64Text Texte Le fichier sous forme de chaîne base64
Non ParamInboundListCode Code 20 Code de la liste des entrants à laquelle le document doit être inséré
Non ParamMetadataJsonText Texte Métadonnées sous forme de chaîne JSON
Non ParamRecordId RecordId L'ID de l'enregistrement auquel le document doit être lié
Non ParamContentTypeText Texte Le texte du type de contenu
Non ParamDocumentLibraryCode Code 20 Code de la Bibliothèque de Documents
Non ParamInfoTagText Texte Un tag d'information
Non ParamEnumSIMDIInboundDocSource Enum "SIM_DI Inbound Doc Source" La source du document
Afficher le code d'exemple
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 'Tous les fichiers (*.*)|*.*', Comment = '{Split=r''\|''}{Locked=s''1''}';
    DialogCaptionTxt: Label 'Choisissez le fichier à télécharger';
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 ou autres méthodes d'extraction

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

    UploadMgt.AddInboundDocumentFromExternal(
        Filename,                                       // ParamFileNameText
        Base64File,                                     // ParamBase64Text
        'INBOUND-LIST',                                 // ParamInboundListCode
        MetadataJsonText,                               // ParamMetadataJsonText - Peut aussi être un texte vide
        SalesHeader.RecordId(),                         // ParamRecordId - Nécessaire si la méthode d'attribution est l'ID d'enregistrement
        'INVOICE',                                      // ParamContentTypeText
        'DOC-LIB-SALESINV',                             // ParamDocumentLibraryCode
        '',                                             // ParamInfoTagText
        Enum::"SIM_DI Inbound Doc Source"::Upload       // ParamEnumSIMDIInboundDocSource
    );
end;