Benutzerdefinierten Rendering-Layouts hinzufügen
Der COSMO Document Configurator verwendet RDLC-Layouts zur Darstellung von Berichten. Welches RDLC-Layout für das Rendering verwendet wird, wird durch das Enum CCS DC Rendering Layout definiert, das auf der Seite Dokumentlayout konfiguriert wird. Um benutzerdefinierte RDLC-Layouts hinzuzufügen, können Sie das Enum programmatisch erweitern, indem Sie eine Enum-Extension erstellen und die Schnittstelle "CCS DC Rendering Layout Information" wie unten beschrieben implementieren.
Kopieren eines bestehenden RDLC-Layouts
Wenn Sie ein benutzerdefiniertes Rendering-Layout hinzufügen möchten, empfiehlt es sich, ein vorhandenes RDLC-Layout aus dem COSMO Document Configurator zu kopieren und es an Ihre Anforderungen anzupassen. Um ein RDLC-Layout aus dem COSMO Document Configurator zu exportieren, navigieren Sie zur Seite Berichtslayouts und wählen Sie das zu exportierende Layout aus. Klicken Sie dann auf die Schaltfläche Layout exportieren, um das RDLC-Layout als Datei herunterzuladen. Die folgenden RDLC-Layouts sind in COSMO Document Configurator enthalten:
| Rendering-Layout | Report ID | Report Name |
|---|---|---|
| A4 Hochformat Flusslayout | 12032040 | DC - A4 Hochformat |
| A4 Hochformat Festes Layout | 12032027 | DC - A4 Hochformat |
| A4 Querformat Festes Layout | 12032028 | DC - A4 Querformat |
| Brief Hochformat Festes Layout | 12032029 | DC - Brief Hochformat |
| Brief Querformat Festes Layout | 12032030 | DC - Brief Querformat |
| Etikett (57 x 102 mm) | 12032032 | DC - Etikett (57 x 102 mm) |
Erweitern des Enums CCS DC Rendering Layout
Erstellen Sie eine neue Enum-Extension und fügen Sie einen neuen Wert hinzu, der Ihr benutzerdefiniertes RDLC-Layout repräsentiert. Der Wert muss die Interfaces CCS DC Rendering Layout Information und CCS DC Rendering Layout Text Processor implementieren:
- Als Implementierung für die Schnittstelle "CCS DC Rendering Layout Text Processor" wählen Sie entweder
CCS DC Flow LayoutoderCCS DC Fixed Layout, je nachdem, ob das benutzerdefinierte Layout auf einem Flusslayout oder auf einem festen/klassischen Layout basiert. - Als Implementierung für die Schnittstelle
CCS DC Rendering Layout Informationgeben Sie eine Codeunit Ihrer Erweiterung an, in der dieses Interface im nächsten Abschnitt implementiert wird.
enumextension [your object ID] [your object name] extends "CCS DC Rendering Layout"
{
value([your value ID]; [your value name])
{
Caption = 'Your value caption';
Implementation = "CCS DC Rendering Layout Text Processor" = ["CCS DC Flow Layout" | "CCS DC Fixed Layout"],
"CCS DC Rendering Layout Information" = [your implementation codeunit];
}
}
Implementieren der Schnittstelle CCS DC Rendering Layout
Implementieren Sie in der Codeunit, die Sie in der Enum-Extension angegeben haben, das Interface CCS DC Rendering Layout Information und fügen Sie die folgenden Methoden hinzu:
GetRenderingLayoutBlob(RenderingLayout: Enum "CCS DC Rendering Layout"; var TempBlob: Codeunit "Temp Blob"): Boolean
Diese Methode muss das RDLC-Layout als Blob zurückgeben. Der ParameterRenderingLayoutenthält den Enum-Wert des/der benutzerdefinierten Layouts. Der ParameterTempBlobist ein temporärer Blob, der mit dem RDLC-Layout gefüllt werden muss. Die Methode musstruezurückgeben, wenn das RDLC-Layout gefunden wurde undfalse, wenn nicht.
Es ist Ihnen überlassen, wo Sie das RDLC-Layout speichern. Sie können z.B.- ein neues Blob-Feld in einer Einrichtungstabelle erstellen, in das Sie das RDLC-Layout über die Benutzeroberfläche hochladen und dann von dort auslesen, oder
- das RDLC Layout in Ihrer Erweiterung inkludieren, indem Sie es mit einem Report-Objekt verknüpfen und die Methode
GetDefaultLayoutBlob(ReportId: Integer; var TempBlob: Codeunit "Temp Blob"): Booleander CodeunitCCS DC Managementverwenden, um das RDLC-Layout als Blob zu erhalten.
GetRenderingLayoutType(RenderingLayout: Enum "CCS DC Rendering Layout"): Enum "Custom Report Layout Type"
Diese Methode muss den benutzerdefinierten Berichtslayouttyp zurückgeben, der entwederRDLCoderWordsein kann. Da derzeit nur RDLC-Layouts unterstützt werden, muss diese Methode immerRDLCzurückgeben.GetPageHeight(RenderingLayout: Enum "CCS DC Rendering Layout"): Integer
Wenn das benutzerdefinierte RDLC-Layout auf einem festen Layout basiert, muss diese Methode die Anzahl der Zeilen pro Seite zurückgeben. Basiert das benutzerdefinierte RDLC-Layout auf einem Flusslayout, muss diese Methode0zurückgeben. Für die enthaltenen festen Layouts werden die folgenden Werte verwendet:- A4 Hochformat Festes Layout:
61 - A4 Querformat Festes Layout:
38 - Brief Hochformat Festes Layout:
56 - Brief Querformat Festes Layout:
41 - Etikett (57 x 102 mm):
25
- A4 Hochformat Festes Layout:
GetPageWidth(RenderingLayout: Enum "CCS DC Rendering Layout"): Integer
Diese Methode muss die nutzbare Breite des Layouts in pt zurückgeben. Für die enthaltenen RDLC-Layouts werden die folgenden Werte verwendet:- A4 hoch: 508
- A4 quer: 778
- Letter hoch: 535
- Letter quer: 715
- Etikett (57 x 102 mm): 158
Erledigt. Sie können nun Ihr benutzerdefiniertes Rendering-Layout auf der Seite Dokumentlayout auswählen.