SaveFileRequest
Beschreibung
Erstellt einen Eintrag in der ECM-Warteschlange mit der übergebenen Datei. (Die Datei wird als BOLB-Feld in der TempECMJnlLine übergeben)
Syntax
[ErrorCode:= ] SaveFileRequest(var TempECMJnlLine: Record
"ECM Document Journal Line"
; var ECMDocDef: Record
"ECM Document Definition"
; MainRecordVariant: Variant; var TempMetadataFieldValue: Record
"ECM Metadata Field Value"
; var TransactionNo: BigInteger)
Parameters
Variable: TempECMJnlLine
Typ: Record "ECM Document Journal Line" temporär
Wird als Datenobjekt ("Container") verwendet, um Daten an eine Funktion zu übergeben, für alle Felder, die in den Dokumentposten gefüllt werden müssen. Standardmäßig werden die Dokumentposten mit Hilfe des MainRecord und der Dokumentdefinition gefüllt.
Filename, BLOB und MD5 Hash sind Pflichtangaben
Optional können z.B. "Externe Belegnummer" , "Dokumentenkategorie" und weiter Felder in den Datenkontainer übergeben werden.
Variable: ECMDocDef
Typ: Record "ECM Document Definition"
ECM Dokumentendefinition für den Datensatz. Die richtige Dokumentdefinition für den Datensatz wird mit dem API-Funktion FindDocDefByRRef gesucht.
Dem Datensatz der Dokumentdefinition können bei Bedarf abweichende Werte übergeben werden z.B. "Dokumentenkategorie".
MainRecordVariant
Typ: Variant
MainRecord (Datensatz) wird in die ECM Warteschlange eingetragen und für die Verarbeitung der Metadaten benötigt.
Tipp: Der MainRecord kann als Record, RecordID oder RecordRef übergeben werden.
Variable: TempMetadataFieldValue
Typ: Record "ECM Metadata Field Value" temporär
Wird als Datenobjekt ("Container") verwendet, um Daten an eine Funktion zu übergeben, für alle Felder, die als Metadaten an das Archiv (Repository) übergeben werden. Standardmäßig reicht es aus, die Tabelle leer zu übergeben, da die Metadaten mit Hilfe des MainRecord und der Dokumentdefinition vorbereitet werden. Alternativ können die gewünschten abweichenden oder zusätzlichen Metadaten hier vorbereitet werden.
Variable: TransactionNo
Typ: BigInteger
ECM Warteschlangen-Transaktionsnr., die zurückgegeben wird.
Mit der Transaktionsnummer und der Funktion ReleaseECMRepositoryRequest wird der ECM Warteschlangeneintrag für die weitere Verarbeitung freigegeben.
Rückgabewert:
ErrorCode
Typ: Integer
ErrorCode = 0 und TransactionNo <> 0, wenn der Vorgang erfolgreich war.
Mit der Funktion ShowMessage können die ErrorCodes angezeigt werden und mit der Funktion WriteLog können diese mitprotokoliert werden.
Bemerkungen:
Dies wird für das Ablagekonzept 2 verwendet. Interne Belege
Beispiel:
/// <summary>
/// StoreDocument2ECMQueue.
/// </summary>
/// <param name="MainRecordVariant">Variant.</param>
/// <param name="TempBlob">Codeunit "Temp Blob".</param>
/// <param name="FileName">Text[250].</param>
local procedure StoreDocument2ECMQueue(MainRecordVariant: Variant; TempBlob: Codeunit
"Temp Blob"
; FileName: Text[
250
])
var
ECMDocDef: Record
"ECM Document Definition"
;
TempECMJnlLine: Record
"ECM Document Journal Line"
temporary;
TempMetadataFieldValue: Record
"ECM Metadata Field Value"
temporary;
ECMapi: Codeunit
"ECM API"
;
NVOutStream: OutStream;
NVInStream: InStream;
TransactionNo: BigInteger;
ErrorCode: Integer;
begin
// https://docs.easy-cloud.de/365BC-cloud/de-DE/118033789.html
// Sucht eine ECM Dokumentdefinition anhand der Tabellennummer, Tabellenbelegart und einem Startdatum (Gültigkeitsdatum) einer Dokumentdefinition (in der jüngsten Vergangenheit).
if
ECMapi.FindDocDefByRRef(ECMDocDef, MainRecordVariant, ECMDocDef.
"Purpose of use"
::
"Assign & File"
) then begin
if
TempBlob.HasValue() then begin
// Trägt die Datei von einem Blob in eine temporary "ECM Document Journal Line"
TempECMJnlLine.
"Line No."
:=
10000
;
TempECMJnlLine.Reset();
TempECMJnlLine.DeleteAll();
Clear(TempECMJnlLine);
TempECMJnlLine.File.CreateOutStream(NVOutStream);
TempBlob.CreateInStream(NVInStream);
CopyStream(NVOutStream, NVInStream);
TempECMJnlLine.
"File Name"
:= FileName;
// Dieser Wert für den Dateinamen kann von der Dokumentdefinition überschrieben werden.
// ECMDocDef."File Name Suggestion" := FileName; // Mit dieser optionalen Zeile kann der Wert für den Dateinamen nicht mehr von der Dokumentdefinition überschrieben werden.
// Generate MD5 Hash
TempECMJnlLine.GenerateMD5Hash();
// optional Fehlerhandling
IF TempECMJnlLine.md5 =
''
THEN
ECMApi.WriteLog(
''
,
''
,
75
, Enum::
"ECM Message Type"
::Warning, MainRecordVariant,
0
,
0
);
TempECMJnlLine.Insert();
// https://docs.easy-cloud.de/365BC-cloud/de-DE/118035412.html
// Erstellt einen Eintrag in der ECM-Warteschlange mit der übergebenen Datei. (Die Datei wird als BOLB-Feld in der TempECMJnlLine übergeben)
ErrorCode := ECMapi.SaveFileRequest(TempECMJnlLine, TempMetadataFieldValue, ECMDocDef, MainRecordVariant, TransactionNo);
if
ErrorCode <>
0
then
ECMApi.WriteLog(
''
,
''
, ErrorCode, Enum::
"ECM Message Type"
::Error, MainRecordVariant,
0
, TransactionNo)
else
if
TransactionNo <>
0
then
// https://docs.easy-cloud.de/365BC-cloud/de-DE/118033732.html
//Setzt den Status eines Eintrages in der ECM Warteschlange von begonnen auf anstehend.
ECMapi.ReleaseECMRepositoryRequest(TransactionNo);
end;
end;
end;