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