4D Write Pro: Dynamisches Füllen von Tabellen mit Entitätsauswahlen und Sammlungen

Als Entwickler erstellen wir oft komplexe und erweiterte 4D Write Pro Dokumente. Es kann vorkommen, dass wir Tabellen erstellen, die aus einer Datenquelle gefüllt werden müssen, und dass wir uns der genauen Zeilen und Spalten nicht sicher sind. Das manuelle Befüllen der Tabellen mit Daten ist jedes Mal eine mühsame Aufgabe. Wir haben Sie gehört, und hier kommt der Datenkontext als unschätzbare Option ins Spiel, die die Welt von ORDA und objektorientierter Entwicklung für 4D Write Pro Dokumente öffnet.

Es ist jetzt möglich, eine „Datenquelle“ für die Tabellen von 4D Write Pro zu definieren. Ob es sich nun um eine Entity-Auswahl oder eine Sammlung handelt, diese „Datenquelle“ wird automatisch die Zeilen dieser Tabellen füttern.

Lassen Sie uns in die Details eintauchen!

Dynamisches Füllen von Tabellen mit Entity Selections & Collections

Ein Bild sagt mehr als 1000 Worte.

Mit dieser Funktion können Sie Dokumente wie dieses erstellen:

Sobald es fertig ist, kann es exportiert(als PDF, als Docx oder in einem anderen verfügbaren Exportformat), gedruckt, geändert usw. werden. Sehen wir uns nun Schritt für Schritt an, wie wir vorgehen!

Tabelle, Kopfzeile, Zeile „Vorlage“, andere Zeilen

In einem 4D Write Pro Dokument kann eine Tabelle nun eine oder mehrere Kopfzeilen enthalten. Die Zeile, die unmittelbar auf die Kopfzeile folgt, wird als „Template“ -Zeile betrachtet, die wiederholt und mit dem Inhalt der Datenquellenelemente gefüllt wird. Die folgenden Zeilen (falls vorhanden) werden automatisch nach unten „geschoben“ und können weitere Informationen enthalten, möglicherweise auch auf der Grundlage der Tabellen-Datenquelle. Das Originaldokument, das zur Erstellung des obigen Berichts verwendet wurde, sieht wie folgt aus:

blank

Der erste Rahmen oben wird mit Informationen aus dem Datenkontext gefüllt. Wenn Sie mit diesem Konzept nicht vertraut sind, empfehlen wir Ihnen, zunächst diesen Blogbeitrag zu lesen. Schauen wir uns nun an, wie die Tabelle selbst definiert ist.

In diesem Fall besteht die Tabelle aus drei Teilen (dazu später mehr):

  • Die erste Zeile wurde als Kopfzeile definiert.
  • Die zweite Zeile ist die Vorlagenzeile.
  • Die folgenden Zeilen enthalten zusätzliche Informationen, die auf der Datenquelle der Tabelle und den Berechnungen basieren.

VERKNÜPFUNG EINER DATENQUELLE MIT EINER TABELLE

Wie der Name schon sagt, liefert eine Datenquelle Daten für eine Tabelle. Daher sollte diese Datenquelle eine Formel sein, deren Ergebnis entweder eine Entitätsauswahl oder eine Sammlung ist. Ist dies nicht der Fall (schließlich kann eine Formel alles zurückgeben), kann auf das Ergebnis der Formel trotzdem in der Tabelle zugegriffen werden (siehe unten), aber es wird keine Zeile als Vorlage verwendet.

Zwei Möglichkeiten zur Vorgehensweise

#1: DEFINIEREN SIE DIE DATENQUELLE MIT DER BENUTZERINFOBERFLÄCHE

Die Benutzeroberfläche wurde so geändert, dass eine Formel direkt mit einer Tabelle verknüpft werden kann.

Stellen wir uns eine Tabelle „Unternehmen“ vor, die mit einer Tabelle „Mitarbeiter“ über eine Verknüpfung „Mitarbeiter“ verbunden ist. Wenn die Entität „Unternehmen“ über einen Kontext im Dokument zugänglich ist, dann ist „Mitarbeiter“ die Datenquelle der Tabelle.

Die mit der Tabelle verbundene Formel kann This.data.company.employees lauten.

blank

blank

… wobei This.data (der Kontext) (später) durch Programmierung bereitgestellt wird:

$context:=New object("company";$company) // $company is a company entity
WP SET DATA CONTEXT(WParea;$context)

#2: DEFINIEREN DER DATENQUELLE DURCH PROGRAMMIERUNG

Die Datenquelle kann auch mit einer einzigen Code-Zeile festgelegt werden.
Jede Tabelle kann nun ein neues Attribut enthalten, das mit dem Befehl WP SET ATTRIBUTES definiert werden kann.

WP SET ATTRIBUTES($table;wk data source;Formula(This.data.company.employees))

WIE DEFINIERT MAN DEN INHALT DER ZEILEN?

Nachdem die Datenquelle der Tabelle definiert wurde, ist es an der Zeit, die Zeilen zu füllen!

Neue Attribute sind dank des Schlüsselworts This verfügbar, das auf den Elementen der Datenquelle basiert.

In der Template-Zeile können Sie This.item.xxx verwenden, wobei xxx (Nachname, Adresse, Postleitzahl…) die Attribute der aktuellen Entität sind, auf die Sie zugreifen möchten, wie This.item.name oder This.item.age. Sie können auch auf den Index des Elements in der Auswahl (oder Sammlung) mit dem Attribut This.itemIndex

blank

Nach der Berechnung (mit WP COMPUTE FORMULAS) können die berechneten Zeilen wie in der Einleitung dargestellt werden.

Weitere Tabellenattribute!

Einige andere Attribute können ebenfalls überall in der Tabelle verwendet werden, normalerweise in den folgenden Zeilen.

This.table.datasource gibt die mit der Tabelle verbundene Formel zurück. Dennoch ist es wahrscheinlich besser, This.tableData, zu verwenden, dessen Wert das bereits ausgewertete Ergebnis dieser Formel ist (normalerweise eine Sammlung oder eine Auswahlentität).

Dies optimiert natürlich die Verarbeitung und gewährleistet die Konsistenz des Dokuments.

Aus diesem letzten Attribut (tableData) lassen sich dank solcher Formeln leicht Summen, Durchschnittswerte, Minimal- oder Maximalwerte berechnen:

This.tableData.min(age)
This.tableData.average(salary)

blank

Noch mehr Attribute?

Es wurden neue Attribute hinzugefügt, die in jeder Tabelle (auch ohne definierte Datenquelle) erreicht werden können. Sie ermöglichen den Zugriff auf:

  • Die Tabelle selbst mit This.table,
  • Die aktuelle Zeile mit This.row,
  • die aktuelle Zeilennummer über This.rowIndex.

PRINT vollständige Berichte in vier Zeilen Code!

Sobald diese Art von Dokument erstellt ist, kann es als Vorlage verwendet werden.

For each ($company; $companies)
  WP SET DATA CONTEXT($template; New object("company"; $company))
  WP PRINT($template) // (before printing, expressions will be recomputed by default)
End for each 

BERICHTE, LISTEN, ETC. ANPASSEN.

Sie können auch eine Vorlage verwenden, deren Tabellen mit Werten aus der Datenquelle gefüllt wurden. Sie können Zeilen hervorheben, Farben und Stile ändern und sogar leere Zeilen entfernen oder hinzufügen!

Am besten frieren Sie das Dokument zunächst ein, so dass alle eingefügten Daten jetzt normale Zeilen und Text sind. Das Einfrieren des Dokuments ist nicht zwingend erforderlich, aber Sie müssen sich darüber im Klaren sein, dass alle Ihre Änderungen verloren gehen, wenn die Formeln neu berechnet werden.

Wenn Ihr Dokument gespeichert werden muss (nicht nur gedruckt oder exportiert), sollten Sie eine Kopie Ihrer Vorlagen verwenden, damit die Vorlagen selbst nicht verloren gehen.

MyWorkingDocument :=WP New($template))

Fazit

Diese neue Funktion ermöglicht es Ihnen, Dokumente aus Vorlagen zu erstellen. Deren Inhalt kann mit einem Minimum an Programmierzeilen auf ORDA basieren.

Diese Dokumente können als PDF, Docx, eMail exportiert werden. Sie können auch als Verbesserungen für Listenformulare und Druckauswahl verwendet werden.

Die automatische Dokumentenerzeugung wird nun stark vereinfacht, sei es für Rechnungen, Kataloge oder Inventare.

Weitere Details finden Sie im Dokumentationszentrum(hier und dort). Und wie immer können Sie sich gerne in den 4D Foren austauschen.

Roland Lannuzel
- Product Owner & 4D Experte - Nach seinem Studium der Elektronik arbeitete Roland als Entwickler und Berater in der industriellen IT-Branche, wo er Lösungen für Kunden mit einer Vielzahl von Datenbanken und Technologien entwickelte. In den späten 80er Jahren verliebte er sich in 4D und setzte es bei der Entwicklung von Geschäftsanwendungen wie Buchhaltungs-, Abrechnungs- und E-Mail-Systemen ein. 1997 trat er schließlich in das Unternehmen ein und leistete einen wertvollen Beitrag, indem er Spezifikationen, Testtools und Demos entwarf, Schulungen durchführte und auf vielen Konferenzen für die 4D Community sprach. Er gestaltet die Zukunft von 4D aktiv mit, indem er neue Funktionen und Datenbankentwicklungstools definiert.