Source-Code-basierte Speicherung von Dokumenten
Document Central kann mit Code erweitert werden, um Dokumente aus einem BLOB programmgesteuert in Document Central hochzuladen. Auf diese Weise ist es möglich, während des Druckvorgangs eines Berichts oder beim Buchen bzw. Umwandeln eines Dokuments automatisch einen Document Central Barcode zu erzeugen und hinzuzufügen.
Die folgenden Anforderungen müssen erfüllt sein:
- Document Central muss lizenziert sein.
- CORE muss in der Erweiterung als Referenz verfügbar sein.
- Document Central muss in der Erweiterung als Referenz vorhanden sein.
Hinzufügen von Eingangs-Dokumenten
Zum Hinzufügen von Dokumenten in die Eingangs-Liste können 2 Funktionen im "SIM_DI Upload Management" verwendet werden: AddInboundDocumentFromExternal & AddInboundDocumentFromSilentUpload.
AddInboundDocumentFromSilentUpload
| Var |
Name |
Datentyp |
Untertyp |
Länge |
Beschreibung |
| Nein |
Filename |
Text |
|
|
Der ursprüngliche Dateiname des Dokuments |
| Nein |
Base64File |
Text |
|
|
Die Datei als Base64-String |
| Nein |
InboundListCode |
Code |
|
20 |
Code der Eingangs-Liste |
| Nein |
StatusCheckText |
Text |
|
|
Statuscheck |
| Nein |
Recordref |
RecordRef |
|
|
Die Datensatz-Referenz, zu der das Dokument hochgeladen werden muss. |
| Nein |
ParamContentTypeText |
Text |
|
|
Der Text des Content-Typs |
| Nein |
InfoTagText |
Text |
|
|
Infotag |
| Nein |
EnumSIMDIInboundDocSource |
Enum |
"SIM_DI Inbound Doc Source" |
|
Der Quellenstatus |
| Nein |
OriginText |
Text |
|
|
Ursprungstext |
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 |
Name |
Datentyp |
Untertyp |
Länge |
Beschreibung |
| Nein |
ParamFileNameText |
Text |
|
|
Der ursprüngliche Dateiname des Dokuments |
| Nein |
ParamBase64Text |
Text |
|
|
Die Datei als Base64-String |
| Nein |
ParamInboundListCode |
Code |
|
20 |
Code der Eingangs-Liste |
| Nein |
ParamMetadataJsonText |
Text |
|
|
Metadaten als JSON-Zeichenkette |
| Nein |
ParamRecordId |
RecordId |
|
|
Die Datensatz-ID, mit der das Dokument verknüpft werden soll |
| Nein |
ParamContentTypeText |
Text |
|
|
Der Text des Inhaltstyps |
| Nein |
ParamDocumentLibraryCode |
Code |
|
20 |
Code der Dokumentbibliothek |
| Nein |
ParamInfoTagText |
Text |
|
|
Infotag |
| Nein |
ParamEnumSIMDIInboundDocSource |
Enum |
"SIM_DI Inbound Doc Source" |
|
Die Quelle des Dokuments |
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;
|