Dokumente per Code ablegen
Ein Code Beispiel zum Ablegen eines Dokuments per Code:
/// <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 BLOB-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 ; |