Save documents with Code
Here is an example, to save documents with 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; |