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;
|