Saltar al contenido

Almacenamiento de documentos basado en código fuente

Document Central se puede ampliar con código que permite cargar documentos desde un BLOB a Document Central mediante código. Este enfoque permite generar y añadir automáticamente un código de barras de Document Central cuando se imprime un informe o cuando se contabiliza o convierte un documento.

Se deben cumplir los siguientes requisitos:

  • El módulo Document Central debe estar licenciado.
  • CORE debe estar disponible en la extensión como referencia.
  • Document Central debe estar presente en la extensión como referencia.

Añadir documentos de entrada

Para añadir documentos a la lista de entrada se pueden utilizar 2 funciones en "SIM_DI Upload Mgt": AddInboundDocumentFromExternal y AddInboundDocumentFromSilentUpload.

AddInboundDocumentFromSilentUpload

Var Nombre Tipo de datos Subtipo Longitud Descripción
No Filename Text El nombre de archivo original del documento
No Base64File Text El archivo como cadena base64
No InboundListCode Code 20 Código de la lista de entrada
No StatusCheckText Text Comprobación de estado
No Recordref RecordRef La referencia del registro al que se debe cargar el documento
No ParamContentTypeText Text El texto del tipo de contenido
No InfoTagText Text Etiqueta de información
No EnumSIMDIInboundDocSource Enum "SIM_DI Inbound Doc Source" El estado de origen
No OriginText Text Texto de origen
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 Nombre Tipo de datos Subtipo Longitud Descripción
No ParamFileNameText Text El nombre de archivo original del documento
No ParamBase64Text Text El archivo como cadena base64
No ParamInboundListCode Code 20 Código de la lista de entrada
No ParamMetadataJsonText Text Metadatos como cadena JSON
No ParamRecordId RecordId El ID de registro al que debe vincularse el documento
No ParamContentTypeText Text El texto del tipo de contenido
No ParamDocumentLibraryCode Code 20 Código de la biblioteca de documentos
No ParamInfoTagText Text Etiqueta de información
No ParamEnumSIMDIInboundDocSource Enum "SIM_DI Inbound Doc Source" El origen del documento
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;