Zum Inhalt

Einrichtung einer benutzerdefinierten Dokumentenlayout-Tabelle

Document Central kann mit Code erweitert werden, der die Verwendung einer anderen Tabelle für benutzerdefinierte Dokumentenlayouts ermöglicht. Dies ist wichtig für Partner, die eine eigene Stammdatenebene anstelle von Kunden und Lieferanten mit einer eigenen Dokumentenlayout-Tabelle oder einfach einer eigenständigen Dokumentenlayout-Tabelle verwenden.

Ein Ereignis wird bereitgestellt, das die Verwendung einer anderen Tabelle für die Dokumentenlayouts ermöglicht. Das folgende Ereignis sollte in einer Ereignisabonnenten-Codeunit erstellt werden, in der Sie die Feldnummern festlegen, die den Feldern in der Business Central-Dokumentenlayout-Tabelle entsprechen. Der folgende Code ist ein Beispiel dafür, wie eine benutzerdefinierte Dokumentenlayout-Tabelle definiert wird.

AL
[EventSubscriber(ObjectType::Codeunit, 5492908, 'OnSetCustomDocumentLayoutTable', '', false, false)]
local procedure OnSetCustomDocumentLayoutTable(var ParamCustomLayoutTableBoolean: Boolean; var ParamDocumentLayoutRecordRef: RecordRef; var ParamDocumentLayoutSourceTypeFieldRef: FieldRef; var ParamDocumentLayoutReportIDFieldRef: FieldRef; var ParamDocumentLayoutSourceNoFieldRef: FieldRef; var ParamDocumentLayoutReportLayoutCodeFieldRef: FieldRef)
var
    LocalRecordSIMDMSReportLayout: Record "SIM_DMS Report Selection";
begin
    ParamDocumentLayoutRecordRef.Open(LocalRecordSIMDMSReportLayout.RecordId.TableNo);
    ParamDocumentLayoutSourceNoFieldRef := ParamDocumentLayoutRecordRef.Field(LocalRecordSIMDMSReportLayout.FieldNo("Source No."));
    ParamDocumentLayoutReportIDFieldRef := ParamDocumentLayoutRecordRef.Field(LocalRecordSIMDMSReportLayout.FieldNo("Report ID"));
    ParamDocumentLayoutSourceTypeFieldRef := ParamDocumentLayoutRecordRef.Field(LocalRecordSIMDMSReportLayout.FieldNo("Source Type"));
    ParamDocumentLayoutReportLayoutCodeFieldRef := ParamDocumentLayoutRecordRef.Field(LocalRecordSIMDMSReportLayout.FieldNo("Custom Report Layout Code"));

    ParamCustomLayoutTableBoolean := true;
end;

Die folgenden Werte entsprechen den Parametern in der Business Central-Dokumentenlayout-Tabelle.

  • Der Parameter ParamDocumentLayoutRecordRef ist die Tabelle der benutzerdefinierten Dokumentenlayout-Tabelle
  • Der Parameter ParamDocumentLayoutSourceNoFieldRef ist das Feld, das die Quellnummer in der BC-Standardtabelle angibt
  • Der Parameter ParamDocumentLayoutReportIDFieldRef ist das Feld, das die Berichts-ID in der BC-Standardtabelle angibt
  • Der Parameter ParamDocumentLayoutSourceTypeFieldRef ist das Feld, das den Quelltyp in der BC-Standardtabelle angibt
  • Der Parameter ParamDocumentLayoutReportLayoutCodeFieldRef ist das Feld, das das Berichtslayout in der BC-Standardtabelle angibt

Es ist auch möglich, neue Werte für das Optionsfeld zu definieren, in dem Sie das Feld für die Kunden-/Lieferantennummer in der Zuordnung für die Dokumentenlayout-Tabelle festlegen.

In dieser Dokumentation wird ein Ereignis bereitgestellt, das die Verwendung eines neuen Optionswerts für die Erweiterung des Optionswerts für das Feld "Use Report Layout from" in der Zuordnung ermöglicht. Es wird auch erklärt, wie das bereitgestellte Ereignis verwendet wird, um den Wert des Optionswerts festzulegen.

Um einen neuen Wert zur Option hinzuzufügen, muss eine Enum-Erweiterung erstellt werden, die so aussehen würde:

AL
1
2
3
4
5
6
7
enumextension 5227465 "SIM_DMS Layout Source" extends "SIM_DMS Report Layout Source" //5492927 
{
    value(5227465; "Business Partner")
    {
        Caption = 'Business Partner';
    }
}
Dieser Code würde die Option Business Partner zum Feld Use Report Layout from hinzufügen. (Business Partner ist ein Beispielwert)

Um den neuen Wert zu verwenden, der zum Feld "Use Report Layout from" hinzugefügt wurde, muss ein neues Ereignis in einer Ereignisabonnenten-Codeunit erstellt werden. Dort definieren Sie die Tabellennummer, die in der Dokumentenlayout-Tabelle gefiltert werden soll. Dieser Code würde so aussehen:

AL
1
2
3
4
5
6
[EventSubscriber(ObjectType::Codeunit, 5492908, 'OnSetCustomDocumentLayoutTableFilter', '', false, false)]
    local procedure OnSetCustomDocumentLayoutTableFilter(ParamRecordSIMDMSMappingLine: Record "SIM_DMS Mapping Line"; var ParamDocumentLayoutSourceTypeFieldRef: FieldRef)
    begin
        if ParamRecordSIMDMSMappingLine."Use Report Layout from" = ParamRecordSIMDMSMappingLine."Use Report Layout from"::"Business Partner" then
            ParamDocumentLayoutSourceTypeFieldRef.SetRange(5492984);
    end;

Dieser Code filtert die verwendete Dokumentenlayout-Tabelle entsprechend dem Wert der benötigten Tabelle. In diesem Fall wird die Dokumentenlayout-Tabelle mit den Layouts gefiltert, die für die Tabelle Business Partner definiert wurden.