Zum Inhalt

Hochladen von Dokumenten per Code über Document Central (alt)

In dieser Dokumentation erstellen wir eine Erweiterung, die das Hochladen von Dokumenten aus einem BLOB in das Document Central über Code ermöglicht. Wenn es um das Hochladen ohne Benutzerinteraktion geht, verwenden Sie bitte die Document Inbound App. Das Erweitern eines Berichts mit Document Central-Code wird verwendet, damit beim Drucken eines Berichts oder beim Buchen/Konvertieren eines Dokuments automatisch ein Document Central-Barcode während dieses Prozesses generiert und hinzugefügt werden kann.

Die folgenden Anforderungen müssen erfüllt sein:

  • Das Document Central-Modul muss lizenziert sein.
  • CORE muss in der Erweiterung als Referenz verfügbar sein.
  • Document Central muss in der Erweiterung als Referenz vorhanden sein.

Datei mit Benutzerinteraktion hochladen:

Die Funktion UploadFileDialog öffnet Benutzerinteraktionen wie Ersetzen/Umbenennen und Auswählen des Inhaltstyps, bevor das Dokument in das Repository hochgeladen wird.

Überladung 1:

Var Name Datentyp Subtyp Länge Beschreibung
Nein Filename Text Der ursprüngliche Dateiname des Dokuments
Nein Base64File Text Die Datei als Base64-String
Nein RRef RecordRef Die Datenrecordreferenz, zu der das Dokument hochgeladen werden muss

Die Funktion gibt aus:

Name Datentyp Länge Beschreibung
Boolean Der ursprüngliche Dateiname des Dokuments

Codebeispiel:

AL
var
    SalesHeader: Record "Sales Header";
    UploadMgt: Codeunit "SIM_DMS Upload Mgt";
    FileManagement: Codeunit "File Management";
    Base64Convert: Codeunit "Base64 Convert";
    TempBlob: Codeunit "Temp Blob";
    RRef: RecordRef;
    InStr: InStream;
    Filename: Text;
    Base64File: Text;
    AllFilesFilterTxt: Label '*.*', Locked = true;
    AllFilesDescriptionTxt: Label 'Alle Dateien (*.*)|*.*', Comment = '{Split=r''\|''}{Locked=s''1''}';
    DialogCaptionTxt: Label 'Upload-Datei auswählen';
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();
    RRef.GetTable(SalesHeader);

    UploadMgt.UploadFileDialog(Filename, Base64File, RRef);
end

Datei lautlos hochladen:

Die Funktion UploadFileSilent lädt ein Dokument mit den angegebenen Parametern ohne Benutzerinteraktion in das Document Central hoch. Es gibt verschiedene Überladungen, um das Dokument zu spezifizieren.

Überladung 1:

Var Name Datentyp Subtyp Länge Beschreibung
Nein Title Text Der Titel oder Name, den das Repository verwenden soll.
Nein Filename Text Der ursprüngliche Dateiname des Dokuments.
Nein Base64File Text Die Datei als Base64-String.
Nein RRef RecordRef Die Datenrecordreferenz, zu der das Dokument hochgeladen werden muss.

Überladung 2:

Var Name Datentyp Subtyp Länge Beschreibung
Nein Title Text Der Titel oder Name, den das Repository verwenden soll.
Nein Filename Text Der ursprüngliche Dateiname des Dokuments.
Nein Base64File Text Die Datei als Base64-String.
Nein RRef RecordRef Die Datenrecordreferenz, zu der das Dokument hochgeladen werden muss.
Nein ContentType Text Der Inhaltstyp, mit dem das Dokument hochgeladen wird.

Überladung 3:

Var Name Datentyp Subtyp Länge Beschreibung
Nein Title Text Der Titel oder Name, den das Repository verwenden soll.
Nein Filename Text Der ursprüngliche Dateiname des Dokuments.
Nein Base64File Text Die Datei als Base64-String.
Nein RRef RecordRef Die Datenrecordreferenz, zu der das Dokument hochgeladen werden muss.
Nein MetadataTmp Record "SIM_DMS Document Metadata" Ein temporärer Datensatz mit Metadaten, die im Inhaltstyp oder Standardinhaltstyp vorhanden sind.

Überladung 4:

Var Name Datentyp Subtyp Länge Beschreibung
Nein Title Text Der Titel oder Name, den das Repository verwenden soll.
Nein Filename Text Der ursprüngliche Dateiname des Dokuments.
Nein Base64File Text Die Datei als Base64-String.
Nein RRef RecordRef Die Datenrecordreferenz, zu der das Dokument hochgeladen werden muss.
Nein ContentType Text Der Inhaltstyp, mit dem das Dokument hochgeladen wird.
Nein MetadataTmp Record "SIM_DMS Document Metadata" Ein temporärer Datensatz mit Metadaten, die im Inhaltstyp oder Standardinhaltstyp vorhanden sind.

Überladung 5:

Var Name Datentyp Untertyp Länge Beschreibung
Nein Titel Text Der Titel oder Name, den das Repository verwenden soll.
Nein Dateiname Text Der ursprüngliche Dateiname des Dokuments.
Nein Base64Datei Text Die Datei als Base64-String.
Nein RRef RecordRef Der Datenbankreferenzdatensatz, in den das Dokument hochgeladen werden muss.
Ja MetadataTmp Record "SIM_DMS Document Metadata" Ein temporärer Datensatz mit Metadaten, der im Inhaltstyp oder Standard-Inhaltstyp existiert.
Nein ForceSilentMetadataManagementBoolean Boolean Die Datei wird ohne Benutzerinteraktion hochgeladen.

Überladung 6:

Var Name Datentyp Untertyp Länge Beschreibung
Nein Titel Text Der Titel oder Name, den das Repository verwenden soll.
Nein Dateiname Text Der ursprüngliche Dateiname des Dokuments.
Nein Base64Datei Text Die Datei als Base64-String.
Nein RRef RecordRef Der Datenbankreferenzdatensatz, in den das Dokument hochgeladen werden muss.
Nein Inhaltstyp Text Der Inhaltstyp, mit dem das Dokument hochgeladen wird.
Ja MetadataTmp Record "SIM_DMS Document Metadata" Ein temporärer Datensatz mit Metadaten, der im Inhaltstyp oder Standard-Inhaltstyp existiert.

Überladung 7:

Var Name Datentyp Untertyp Länge Beschreibung
Nein Titel Text Der Titel oder Name, den das Repository verwenden soll.
Nein Dateiname Text Der ursprüngliche Dateiname des Dokuments.
Nein Base64Datei Text Die Datei als Base64-String.
Nein RRef RecordRef Der Datenbankreferenzdatensatz, in den das Dokument hochgeladen werden muss.
Nein Inhaltstyp Text Der Inhaltstyp, mit dem das Dokument hochgeladen wird.
Ja MetadataTmp Record "SIM_DMS Document Metadata" Ein temporärer Datensatz mit Metadaten, der im Inhaltstyp oder Standard-Inhaltstyp existiert.
Nein ForceSilentMetadataManagementBoolean Boolean Die Datei wird ohne Benutzerinteraktion hochgeladen.

Überladung 8:

Var Name Datentyp Untertyp Länge Beschreibung
Nein Titel Text Der Titel oder Name, den das Repository verwenden soll.
Nein Dateiname Text Der ursprüngliche Dateiname des Dokuments.
Nein Base64Datei Text Die Datei als Base64-String.
Nein RRef RecordRef Der Datenbankreferenzdatensatz, in den das Dokument hochgeladen werden muss.
Nein Inhaltstyp Text Der Inhaltstyp, mit dem das Dokument hochgeladen wird.
Ja MetadataTmp Record "SIM_DMS Document Metadata" Ein temporärer Datensatz mit Metadaten, der im Inhaltstyp oder Standard-Inhaltstyp existiert.
Nein ForceSilentMetadataManagementBoolean Boolean Die Datei wird ohne Benutzerinteraktion hochgeladen.
Nein ParamCommentText Text Kommentar zur Version, wenn die Datei bereits im Repository vorhanden ist.

Die Funktion gibt aus:

Name Datentyp Länge Beschreibung
Boolean Gibt true zurück, wenn die Aktion erfolgreich war.

Codebeispiel:

AL
var
    SalesHeader: Record "Sales Header";
    UploadMgt: Codeunit "SIM_DMS Upload Mgt";
    FileManagement: Codeunit "File Management";
    Base64Convert: Codeunit "Base64 Convert";
    TempBlob: Codeunit "Temp Blob";
    RRef: RecordRef;
    InStr: InStream;
    Filename: Text;
    Base64File: Text;
    AllFilesFilterTxt: Label '*.*', Locked = true;
    AllFilesDescriptionTxt: Label 'Alle Dateien (*.*)|*.*', Comment = '{Split=r''\|''}{Locked=s''1''}';
    DialogCaptionTxt: Label 'Upload-Datei auswählen';
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();
    RRef.GetTable(SalesHeader);

    UploadMgt.UploadFileSilent(Filename,Filename, Base64File, RRef);
end

Mehrere Dateien lautlos hochladen:

Die Funktion UploadMultiFileSilent lädt mehrere Dokumente mit den angegebenen Parametern ohne Benutzerinteraktion in das Document Central hoch. Es gibt verschiedene Überladungen, um die Dokumente zu spezifizieren.

Überladung 1:

Var Name Datentyp Subtyp Länge Beschreibung
Nein ParamTitleListOfText Liste von Texten 250 Der Titel oder Name, den das Repository verwenden soll.
Nein ParamFilenameListOfText Liste von Texten 250 Der ursprüngliche Dateiname des Dokuments.
Nein ParamBase64FileListOfText Liste von Texten Die Datei als Base64-String.
Nein ParamRecordRef RecordRef Die Datenrecordreferenz, zu der das Dokument hochgeladen werden muss.
Nein ParamContentTypeListOfText Liste von Texten 100 Der Inhaltstyp, mit dem das Dokument hochgeladen wird.
Ja ParamRecordTempSIMDMSDocumentMetadata RecordRef "SIM_DMS Document Metadata" Ein temporärer Datenrecord mit Metadaten, die im Inhaltstyp oder Standardinhaltstyp vorhanden sind.
Nein ParamBooleanOneGroupID RecordRef Gibt an, ob die Dateien zu einer einzigen neuen Gruppe hinzugefügt werden sollen oder ob jede Datei zu einer neuen Gruppe hinzugefügt werden soll.

Überladung 2:

Var Name Datentyp Subtyp Länge Beschreibung
Nein ParamTitleListOfText Liste von Texten 250 Der Titel oder Name, den das Repository verwenden soll.
Nein ParamFilenameListOfText Liste von Texten 250 Der ursprüngliche Dateiname des Dokuments.
Nein ParamBase64FileListOfText Liste von Texten Die Datei als Base64-String.
Nein ParamRecordRef RecordRef Die Datenrecordreferenz, zu der das Dokument hochgeladen werden muss.
Ja ParamRecordTempSIMDMSDocumentMetadata RecordRef "SIM_DMS Document Metadata" Ein temporärer Datenrecord mit Metadaten, die im Inhaltstyp oder Standardinhaltstyp vorhanden sind.
Ja ParamBooleanOneGroupID RecordRef Gibt an, ob die Dateien zu einer einzigen neuen Gruppe hinzugefügt werden sollen oder ob jede Datei zu einer neuen Gruppe hinzugefügt werden soll.

Überladung 3:

Var Name Datentyp Subtyp Länge Beschreibung
Nein ParamTitleListOfText Liste von Texten 250 Der Titel oder Name, den das Repository verwenden soll.
Nein ParamFilenameListOfText Liste von Texten 250 Der ursprüngliche Dateiname des Dokuments.
Nein ParamBase64FileListOfText Liste von Texten Die Datei als Base64-String.
Nein ParamRecordRef RecordRef Die Datenrecordreferenz, zu der das Dokument hochgeladen werden muss.
Ja ParamRecordTempSIMDMSDocumentMetadata RecordRef "SIM_DMS Document Metadata" Ein temporärer Datenrecord mit Metadaten, die im Inhaltstyp oder Standardinhaltstyp vorhanden sind.
Ja ParamBooleanOneGroupID RecordRef Gibt an, ob die Dateien zu einer einzigen neuen Gruppe hinzugefügt werden sollen oder ob jede Datei zu einer neuen Gruppe hinzugefügt werden soll.
Nein ParamCommentText Text Kommentar zur Version, wenn die Datei bereits im Repository vorhanden ist.

Codebeispiel:

AL
var
    TempSIMDMSDocumentMetadata: Record "SIM_DMS Document Metadata" temporary;
    UploadMgt: Codeunit "SIM_DMS Upload Mgt";
    FileManagement: Codeunit "File Management";
    Base64Convert: Codeunit "Base64 Convert";
    SIMCOREText: Codeunit "SIM_CORE Text";
    TempBlob: Codeunit "Temp Blob";
    SIMDMSMgt: Codeunit "SIM_DMS Mgt.";
    RRef: RecordRef;
    InStr: InStream;
    Filename: Text;
    Base64File: Text;
    AllFilesFilterTxt: Label '*.*', Locked = true;
    AllFilesDescriptionTxt: Label 'Alle Dateien (*.*)|*.*', Comment = '{Split=r''\|''}{Locked=s''1''}';
    DialogCaptionTxt: Label 'Upload-Datei auswählen';
    ListTitle: Liste von [Text[250]];
    ListFilename: Liste von [Text[250]];
    ListBase64: Liste von [Text];
    ListContentType: Liste von [Text[100]];
begin
    RRef.GetTable(Rec);

    Filename := FileManagement.BLOBImportWithFilter(TempBlob, DialogCaptionTxt, '', AllFilesDescriptionTxt, AllFilesFilterTxt);
    Clear(InStr);
    TempBlob.CreateInStream(InStr);
    ListBase64.Add(Base64Convert.ToBase64(InStr));
    ListTitle.Add(SIMCOREText.GetFilenameWithoutExtension(FileManagement.GetFileName(Filename)));
    ListFilename.Add(FileManagement.GetFileName(Filename));

    Filename := FileManagement.BLOBImportWithFilter(TempBlob, DialogCaptionTxt, '', AllFilesDescriptionTxt, AllFilesFilterTxt);
    Clear(InStr);
    TempBlob.CreateInStream(InStr);
    ListBase64.Add(Base64Convert.ToBase64(InStr));
    ListTitle.Add(SIMCOREText.GetFilenameWithoutExtension(FileManagement.GetFileName(Filename)));
    ListFilename.Add(FileManagement.GetFileName(Filename));

    Filename := FileManagement.BLOBImportWithFilter(TempBlob, DialogCaptionTxt, '', AllFilesDescriptionTxt, AllFilesFilterTxt);
    Clear(InStr);
    TempBlob.CreateInStream(InStr);
    ListBase64.Add(Base64Convert.ToBase64(InStr));
    ListTitle.Add(SIMCOREText.GetFilenameWithoutExtension(FileManagement.GetFileName(Filename)));
    ListFilename.Add(FileManagement.GetFileName(Filename));

    ListContentType.Add('Andere Dokumente');
    ListContentType.Add('Andere Dokumente');
    ListContentType.Add('E-Mail');

    SIMDMSMgt.CreateMappingMetaData(TempSIMDMSDocumentMetadata, RRef);

    UploadMgt.UploadMultiFileSilent(ListTitle, ListFilename, ListBase64, RRef, ListContentType, TempSIMDMSDocumentMetadata, true);
end

Archivierungs-Warteschlange für Dokumenten-Upload nutzen (ALT)

Die Funktion ArchiveDocument lädt die angegebene Datei mit den entsprechenden Parametern und Metadaten in die Archivierungs-Warteschlange. Die Job-Warteschlange verarbeitet das Dokument und lädt es mit Verzögerung in das Repository hoch.

Wir empfehlen die Verwendung dieser Aktion nicht. Die Archivierungs-Warteschlange ist für Berichte reserviert. Bitte verwenden Sie stattdessen die Document Inbound App für diesen Prozess.

Überladung 1:

Var Name Datentyp Subtyp Länge Beschreibung
Nein Title Text Der Titel oder Name, den das Repository verwenden soll.
Nein Filename Text Der ursprüngliche Dateiname des Dokuments.
Nein RRef RecordRef Die Datenrecordreferenz, zu der das Dokument hochgeladen werden muss.

Überladung 2:

Var Name Datentyp Subtyp Länge Beschreibung
Nein Title Text Der Titel oder Name, den das Repository verwenden soll.
Nein Filename Text Der ursprüngliche Dateiname des Dokuments.
Nein RRef RecordRef Die Datenrecordreferenz, zu der das Dokument hochgeladen werden muss.
Nein ContentType Text Der Inhaltstyp, mit dem das Dokument hochgeladen wird.

Überladung 3:

Var Name Datentyp Subtyp Länge Beschreibung
Nein Title Text Der Titel oder Name, den das Repository verwenden soll.
Nein Filename Text Der ursprüngliche Dateiname des Dokuments.
Nein RRef RecordRef Die Datenrecordreferenz, zu der das Dokument hochgeladen werden muss.
Nein MetadataTmp Record "SIM_DMS Document Metadata" Ein temporärer Datensatz mit Metadaten, die im Inhaltstyp oder Standardinhaltstyp vorhanden sind.

Überladung 4:

Var Name Datentyp Subtyp Länge Beschreibung
Nein Title Text Der Titel oder Name, den das Repository verwenden soll.
Nein Filename Text Der ursprüngliche Dateiname des Dokuments.
Nein RRef RecordRef Die Datenrecordreferenz, zu der das Dokument hochgeladen werden muss.
Nein ContentType Text Der Inhaltstyp, mit dem das Dokument hochgeladen wird.
Nein MetadataTmp Record "SIM_DMS Document Metadata" Ein temporärer Datensatz mit Metadaten, die im Inhaltstyp oder Standardinhaltstyp vorhanden sind.

Die Funktion gibt aus:

Name Datentyp Länge Beschreibung
BigInteger Gibt die Eintragsnummer des Datenrecords SIM_DMS Archiv-Warteschlangeneintrag zurück.

Codebeispiel:

AL
var
    SalesHeader: Record "Sales Header";
    UploadMgt: Codeunit "SIM_DMS Upload Mgt";
    FileManagement: Codeunit "File Management";
    Base64Convert: Codeunit "Base64 Convert";
    TempBlob: Codeunit "Temp Blob";
    RRef: RecordRef;
    InStr: InStream;
    Filename: Text;
    Base64File: Text;
    AllFilesFilterTxt: Label '*.*', Locked = true;
    AllFilesDescriptionTxt: Label 'Alle Dateien (*.*)|*.*', Comment = '{Split=r''\|''}{Locked=s''1''}';
    DialogCaptionTxt: Label 'Upload-Datei auswählen';
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();
    RRef.GetTable(SalesHeader);

    UploadMgt.ArchiveDocument(Base64File, Filename, RRef);
end

Metadaten für RecordRef abrufen

Die Funktion GetMetadata gibt alle Metadaten für die angegebene RecordRef gemäß den Einstellungen zurück.

Überladung 1:

Var Name Datentyp Subtyp Länge Beschreibung
Ja MetadataTmp Record "SIM_DMS Document Metadata" Die Funktion GetMetadata gibt alle Metadaten für die angegebene RecordRef gemäß den Einstellungen zurück.
Nein RRef RecordRef Die Datenrecordreferenz, zu der das Dokument hochgeladen werden muss.

Bericht durch Drucken archivieren

Die Funktion ArchiveReportByPrinting druckt den entsprechenden Bericht für diese Tabelle und den Primärschlüssel des RRef. In diesem Fall wird der Datenrecord nicht auf den aktuellen Datenrecord gefiltert.

In den Berichtseinstellungen können Sie sehen, was für den Bericht festgelegt ist. Hier können Sie auch angeben, ob der Bericht über die Job-Warteschlange ausgeführt wird.

Var Name Datentyp Subtyp Länge Beschreibung
Nein RRef RecordRef Die Datenrecordreferenz, zu der das Dokument hochgeladen werden muss.

Die Funktion gibt aus:

Name Datentyp Subtyp Länge Beschreibung
RRef BigInteger Gibt die Eintragsnummer des Datenrecords SIM_DMS Archiv-Warteschlangeneintrag zurück.

Codebeispiel:

AL
var
    SalesHeader: Record "Sales Header";
    UploadMgt: Codeunit "SIM_DMS Upload Mgt";
    RRef: RecordRef;
begin
    SalesHeader.Reset();
    SalesHeader.Findfirst();
    RRef.GetTable(SalesHeader);

    UploadMgt.ArchiveReportByPrinting(RRef);
end

Bericht durch Buchen archivieren

Die Funktion ArchiveReportByPosting druckt den entsprechenden Bericht für diese Tabelle und den Primärschlüssel des RRef. In diesem Fall wird der Datenrecord aus dem aktuellen Datenrecord herausgefiltert.

In den Berichtseinstellungen können Sie sehen, was für den Bericht festgelegt ist. Hier können Sie auch angeben, ob der Bericht über die Job-Warteschlange ausgeführt wird.

Var Name Datentyp Subtyp Länge Beschreibung
Nein RRef RecordRef Die Datenrecordreferenz, zu der das Dokument hochgeladen werden muss.

Die Funktion gibt aus:

Name Datentyp Subtyp Länge Beschreibung
RRef BigInteger Gibt die Eintragsnummer des Datenrecords SIM_DMS Archiv-Warteschlangeneintrag zurück.

Codebeispiel:

AL
var
    SalesHeader: Record "Sales Header";
    UploadMgt: Codeunit "SIM_DMS Upload Mgt";
    RRef: RecordRef;
begin
    SalesHeader.Reset();
    SalesHeader.Findfirst();
    RRef.GetTable(SalesHeader);

    UploadMgt.ArchiveReportByPosting(RRef);
end

Bericht durch Berichts-ID archivieren

Die Funktion ArchiveReportByReportId druckt den angegebenen Bericht. Der Bericht und der Datenrecord müssen übereinstimmen.

In den Berichtseinstellungen können Sie sehen, was für den Bericht festgelegt ist. Hier können Sie auch angeben, ob der Bericht über die Job-Warteschlange ausgeführt wird.

Var Name Datentyp Subtyp Länge Beschreibung
Nein RRef RecordRef Die Datenrecordreferenz, zu der das Dokument hochgeladen werden muss.
Nein ReportNo Integer Die Nummer des zu archivierenden Berichts.

Die Funktion gibt aus:

Name Datentyp Subtyp Länge Beschreibung
RRef BigInteger Gibt die Eintragsnummer des Datenrecords SIM_DMS Archiv zurück.

Codebeispiel:

AL
var
    SalesHeader: Record "Sales Header";
    UploadMgt: Codeunit "SIM_DMS Upload Mgt";
    RRef: RecordRef;
begin
    SalesHeader.Reset();
    SalesHeader.Findfirst();
    RRef.GetTable(SalesHeader);

    UploadMgt.ArchiveReportByReportId(RRef,1304);
end