Befehlsreferenz CIB jsMerge

Transcription

Befehlsreferenz CIB jsMerge
> Technical Support & Services
Befehlsreferenz CIB jsMerge
Anwender-Handbuch
Erzeugung von dynamischen Dokumenten im ODTFormat
> Stand: 28. Oktober 2014
Version 1.0
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
DOKUMENT
BefehlsreferenzCIBjsmerge.rtf vom 28.10.14 11:26
Autor:
CIB software GmbH
Thema:
Befehlsreferenz CIB jsMerge – Anwender-Handbuch
Erzeugung von dynamischen Dokumenten im ODT-Format
Copyright:
CIB software GmbH, Elektrastraße 6a, 81925 München
Status:
gültig
2 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
INHALT
1
ALLGEMEIN
5
1.1
HINWEIS
5
1.2
SUPPORT
6
1.3
VERSIONSHISTORIE
6
1.4
LITERATURVERWEIS
6
1.5
LIEFERUMFANG
6
1.6
LIZENZIERUNG
7
1.7
ABKÜRZUNGEN
7
2
EINFÜHRUNG
8
2.1
ANSTEUERUNG DER CIBJSMERGE DLL
9
2.1.1
Aufruf über CIB runshell
10
2.1.2
Aufruf über CIB job
11
2.2
CIB PLUG-IN FÜR LIBREOFFICE / APACHE OPENOFFICE
12
3
SYNTAXGRUNDLAGEN
13
3.1
ZEICHENERKLÄRUNG
13
3.2
VERWENDUNG VON FELDERN
13
3.2.1
Skriptfelder
14
3.2.2
Inhaltsfelder
14
3.3
GEMISCHTE SKRIPT- UND INHALTSFELDER
16
4
BESCHREIBUNG DER CIB-FUNKTIONEN
17
4.1
KURZREFERENZ
17
4.2
FUNKTIONEN IM DETAIL
18
4.2.1
text(text)
18
4.2.2
fref(name, {formfieldAttributes})
18
4.2.3
include(name, { includeAttributes })
19
4.2.4
ref(variableName) und getData(variableName)
20
4.2.5
isEmptyRef(variableName)
20
4.2.6
existsRef(variableName)
21
4.2.7
setData(variableName, value)
21
4.2.8
formatDate(formatString, date)
21
4.2.9
Verarbeitung von Eingabedaten in Tabellenform
22
4.2.9.1
resetRec(tablealias)
23
4.2.9.2
hasRec(tablealias)
23
4.2.9.3
nextRec(tablealias)
23
4.2.9.4
mergeRec(tablealias)
23
3 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
4.2.9.5
Besonderheiten bei den erstellten dynamischen Tabellen
24
4.3
RESERVIERTE VARIABLEN UND FUNKTIONEN
25
5
JAVASCRIPT KONTROLLSTRUKTUREN
26
5.1
BEDINGTE ANWEISUNGEN
26
5.2
SCHLEIFENANWEISUNGEN
27
5.3
VERGLEICHSOPERATOREN
27
6
JAVASCRIPT FUNKTIONEN
28
6.1
GLOBALE FUNKTIONEN
28
6.2
LOKALE FUNKTIONEN
28
6.3
EXPORT VON LOKALEN FUNKTIONEN
29
6.4
SUPPORT DER JAVASCRIPT-FUNKTIONEN
29
7
UNTERSTÜTZTE INHALTE UND EIGENSCHAFTEN
30
8
FÜR RTF-UMSTEIGER: GEGENÜBERSTELLUNG DER FUNKTIONEN
32
8.0.1
Abbildung von RTF-Feld-Befehlen auf die Skriptlogik
32
9
ANWENDUNGSBEISPIEL
38
4 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
1
ALLGEMEIN
1.1 HINWEIS
© Copyright 2014 CIB software GmbH. Alle Rechte vorbehalten.
Die CIB software GmbH behält sich sämtliche Eigentumsrechte an der angebotenen Software und
der dazugehörigen Dokumentation vor. Die Benutzung der Software und des dazugehörigen
Benutzerhandbuches unterliegen dem der Software zugrundeliegenden Lizenzvertrag. Die
Bereitstellung und der Download dieses Dokuments und der Software allein bewirken keine
Übertragung von Nutzungs- und Vervielfältigungsrechten.
Kein Teil dieses Handbuchs darf ohne schriftliche Genehmigung der CIB software GmbH in
irgendeiner Form reproduziert oder weiterverwertet werden. Auch eine Bearbeitung, insbesondere
eine Übersetzung der Dokumentation, ist ohne Genehmigung der CIB software GmbH nicht
gestattet. Der Inhalt dieses Handbuches ist auch urheberrechtlich geschützt, wenn es nicht mit der
Software geliefert wird, die eine Endbenutzerlizenzvereinbarung enthält.
CIB Produktbezeichnungen wie CIB coSys, CIB workbench, CIB jsMerge, CIB merge, CIB format, CIB
pdf toolbox sind entweder eingetragene Marken oder Marken der CIB software GmbH.
Windows ist eine eingetragene Marke der Microsoft Corporation.
Solaris und Java sind Marken bzw. eingetragene Marken der Sun Microsystems, Inc.
Alle anderen Marken- und Produktnamen sind Marken oder eingetragene Marken der jeweiligen
Rechteinhaber.
Der Inhalt dieses Handbuchs wurde mit größter Sorgfalt erarbeitet. Die Angaben in diesem
Handbuch gelten jedoch nicht als Zusicherung von Eigenschaften des Produktes. Die CIB software
GmbH haftet nur im Umfang ihrer Verkaufs- und Lieferbedingungen und übernimmt keine Gewähr
für technische Ungenauigkeiten und oder Auslassungen.
Die CIB software GmbH haftet weder für technische oder typographische Fehler und Mängel in
diesem Handbuch, noch für Schäden, die direkt oder indirekt auf die Lieferung, Leistung und
Nutzung dieses Materials zurückzuführen sind.
Die Informationen in diesem Handbuch können ohne Ankündigung geändert werden.
Sollten während des Einsatzes Unstimmigkeiten in Zusammenhang mit den Ausführungen in dieser
Übersicht auftreten, sind wir Ihnen für entsprechende Hinweise sehr dankbar:
CIB software GmbH
Elektrastraße 6a
81925 München
E-Mail:
[email protected]
5 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
Tel.:
49 (0)89 / 1 43 60 - 111
Fax.:
49 (0)89 / 1 43 60 - 100
1.2 SUPPORT
E-Mail:
[email protected]
Tel.:
49 (0)89 / 1 43 60 - 111
Fax.:
49 (0)89 / 1 43 60 – 100
1.3 VERSIONSHISTORIE
Version
Beschreibung
Datum
1/0
Erstausgabe
28.10.2014
1.4 LITERATURVERWEIS
Dokumentationsart
Titel
Technischer Leitfaden
Technischer Leitfaden CIB merge (für RTF-Dokumente)
Technischer Leitfaden
Technischer Leitfaden CIB jsMerge
Schulung
Textprogrammierung im RTF-Format:
Dynamische Dokumente - Band 1 – Grundlagen
Dynamische Dokumente - Band 2 - fortgeschrittene Optionen
1.5 LIEFERUMFANG
Versionshistorie
Befehlsreferenz CIB jsMerge
CibJSMerge.h
6 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
Win32:
CibDataCsv.dll
CibDataXml.dll
CibJSMerge32.dll
Xalan-C_1_5_0.dll
Xerces-c_2_2_0.dll
Linux:
libcibdatacsv.so
libcibdataxml.so
libcibjsmrgux.so
libxerces-c.so.22
libxalan-c1_5_0.so
1.6 LIZENZIERUNG
Dieses Dokument gibt keine Hinweise zur Lizenzierung. Detaillierte Informationen zu Lizenzierung
und den Lizenzmodellen erhalten Sie von den Mitarbeitern des CIB Vertriebs.
1.7 ABKÜRZUNGEN
In diesem Dokument werden folgende Abkürzungen benutzt:
−
CSV
comma separated values, Standardformat zur Datenübergabe
−
DOCX doc eXtended, an die alte Dateiendung (doc) von Word-Dateien bis Word 2007 hat
wegen dem danach erweiterten Dateiformat (eXtended, XML-basiert) ein X angehängt
bekommen.
−
ODF
Open Document Format (XML basiert, ISO zertifiziert)
−
ODT
OpenDocument Text
−
RTF
Rich Text Format, leistungsfähiges, standardisiertes Dateiformat zur
Beschreibung von Dokumenten
−
XML
eXtended Markup Language, Standardformat zur Datenübergabe
7 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
2
EINFÜHRUNG
CIB jsMerge ist eine zentrale Komponente innerhalb der CIB office Module (CoMod) zur Erzeugung
von dynamischen Dokumenten unter Verwendung von ODT-Formaten und JavaScript basierten
Feldanweisungen.
XML basierte offene Dokumentenformate wie Open Document und Office Open XML finden immer
größere Verbreitung. Vor allem da sich auch Microsoft entschieden hat, das Office Open XML
Format als Standardformat in den aktuellen Versionen von Microsoft Office zu verwenden.
XML basierte offene Dokumentenformate werden dadurch zunehmend eine Alternative zum bis
Dato für die Textprogrammierung verwendeten RTF (Rich Text)-Format. Einige CIB Module
verarbeiten bisher das RTF-Format und mit dem Modul CIB jsMerge wird die Palette erweitert auf
die zusätzliche Verarbeitung von ODT- und DOCX-Formaten.
CIB jsMerge interpretiert die Feldanweisungen, die sich in den Dokumentbausteinen (sogenannten
Templates) befinden und mischt in diese optional variable Daten ein. Das Ergebnis ist ein
Zieldokument, in dem die Feldanweisungen aufgelöst und die aktuell zugesteuerten Daten direkt
enthalten sind. Die variablen Daten können aus CSV-Dateien und XML-Dateien eingemischt werden.
Für die Dokumentbausteine wird aktuell das ODT-Format unterstützt. Die Verwendung des DOCXFormates ist möglich, ist derzeit jedoch noch nicht voll implementiert.
8 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
2.1 ANSTEUERUNG DER CIBJSMERGE DLL
CIB jsMerge kann als CibJSMerge32.dll über die CIB runshell oder CIB job angesteuert werden.
Folgende Parameter können dabei übergeben werden:
inputfile:
Als Eingabedatei kann hier eine .odt-Datei angegeben werden. Diese Datei stellt das
Wurzeldokument dar. Im Wurzeldokument können weitere Dokumente eingebunden werden.
outputfile:
Hier wird der gewünschte Dateiname des Ergebnisdokuments angegeben. Das Ergebnisdokument
enthält alle aus den Bausteinen und der Datenversorgung eingemischten Informationen.
scriptfile:
In der Skriptdatei können globale Funktionen in der Skriptsprache JavaScript definiert werden, die
dann in allen Templates zur Verfügung stehen.
licenseCompany:
Mit dieser Property wird der Lizenznehmer aus den Lizenzdaten an CIB jsMerge gesetzt. Diese
Property muss bei einem Aufruf gesetzt sein.
licenseKey:
Mit dieser Property wird der Lizenzschlüssel aus den Lizenzdaten an CIB jsMerge gesetzt. Diese
Property muss bei einem Aufruf gesetzt sein.
datafile:
Als Datenversorgung kann eine CSV-Datei oder eine XML-Datei dienen. Diese Dateien enthalten die
Daten, die später im Wurzeldokument oder dessen eingebundenen Vorlagen verwendet werden.
multidatafile:
Handelt es sich bei der verwendeten CSV- oder XML-Datei um eine Multi-Datenversorgung, muss
diese Property mit dem Wert „1“ gesetzt werden.
headerfile:
Dieser Parameter wird bei der Datenversorgung mit XML eingesetzt. Er zeigt auf die gesetzte
Datendatei. Wird „headerfile“ in Kombination mit dem Parameter „multidatafile“ verwendet, so
gibt „datafile“ den XPath zu den Multiknoten an.
ignoreInvalidXMLCharacters:
Wird dieser boolesche Parameter mit dem Wert „1“ gesetzt, werden nicht gültige XML-Zeichen in
der Datenversorgung herausgefiltert. Ist dieser Parameter auf „0“ gesetzt, gibt CIB jsMerge im
Falle von nicht-validen Zeichen einen Fehler aus.
logfile:
Der Parameter setzt den Dateinamen (und Pfad) für die Fehlerprotokoll-Datei. Dieser Parameter
kann nicht in der Skriptdatei gesetzt werden.
9 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
loglevel:
Über den Parameter „loglevel“ kann man die Menge/Art der Fehlermeldungen im Logfile
bestimmen. Es gibt die folgenden Levels: FATAL | ERROR | WARN | INFO | DEBUG | TRACE | ALL
Je allgemeiner das Level gewählt wird, desto größer wird die Datei. Der Default Wert ist „INFO“.
Dieser Parameter kann nicht in der Skriptdatei gesetzt werden.
Hinweis:
Alle oben genannten Parameter bis auf „logfile“ und „loglevel“ können auch innerhalb der
Skriptdatei übergeben werden.
Beispiel Skriptdatei:
setProperty("inputfile", "./Dateiname.odt");
setProperty("outputfile", "Dateiname_out.odt");
setProperty("datafile", "testordner/steuer.csv");
setProperty("multidatafile", "1");
2.1.1 Aufruf über CIB runshell
Über die CIB runshell kann CIB jsMerge wie folgt angesteuert werden:
Cibrsh.exe <property1>=<value1> <property2>=<value2> -js [<inputfile name><outputfile name>]
Beispiel:
Cibrsh.exe scriptfile=meinSkript.js licenseCompany=Lizenznehmer licenseKey=xxxx-xxxxx-xxxxxxxx
datafile=Daten.csv inputfile=Eingabe.odt outputfile=Ausgabe.odt –js
Beim Aufruf über die CIB runshell ist es auch möglich, die Ein- und Ausgabedateien ohne Angabe
der Parameter-Bezeichnungen „inputfile“ und „outputfile“ zu setzen.
Beispiel:
Cibrsh.exe scriptfile=meinSkript.js licenseCompany=Lizenznehmer licenseKey=xxxx-xxxxx-xxxxxxxx
datafile=Daten.csv Eingabe.odt Ausgabe.odt –js
Hinweise:
Die Properties licenseCompany und licenseKey müssen bei jedem Aufruf gesetzt werden.
Properties können grundsätzlich sowohl direkt im Aufruf über die CIB runshell als auch in der
Skriptdatei gesetzt werden. Dabei gilt:
Sind Properties im CIB runshell-Aufruf gesetzt, haben diese Properties standardmäßig Vorrang vor
Properties, die in der Skriptdatei angegeben wurden.
Sollen die in der Skriptdatei angegebenen Properties gelten, so muss in der Skriptdatei der
Override-Parameter innerhalb des setProperty()-Befehls auf „true“ gesetzt werden.
10 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
Beispiel:
Für den oben bereits dargestellten CIB runshell-Aufruf
Cibrsh.exe scriptfile=meinSkript.js licenseCompany=Lizenznehmer licenseKey=xxxx-xxxxxxxxxxxxx datafile=Daten.csv inputfile=Eingabe.odt outputfile=Ausgabe.odt –js
wird Folgendes in der Skriptdatei „meinSkript.js“ gesetzt:
setProperty("inputfile", "./AndereEingabe.odt", true);
setProperty("outputfile", "AndereAusgabe.odt", false);
setProperty("datafile", "testordner/AndereDaten.csv");
In diesem Beispiel wird an CIB jsMerge die Eingabedatei „AndereEingabe.odt“ aus dem Skript
„meinSkript.js“ übergeben, da der Override-Parameter für „inputfile“ auf „true“ gesetzt wurde. Der
über den CIB runshell-Aufruf direkt angegebene Parameter „inputfile“ wird in diesem Fall
ignoriert.
Für die Ausgabedatei und die Datenversorgung werden die im CIB runshell-Aufruf genannten
Dateien „Daten.csv“ und „Ausgabe.odt“ übergeben.
Für diese beiden Properties „outputfile“ und „datafile“ wurde in der Skriptdatei der OverrideParameter nicht oder auf „false“ gesetzt, somit gilt das Standardverhalten.
2.1.2 Aufruf über CIB job
Für die Ansteuerung über CIB job wurde ein neuer Jobstep: „jsmerge“ eingeführt. In diesem
Jobstep können die Eigenschaften wie gewohnt an CIB jsMerge gesetzt werden.
<step name="jsmerge" command="jsmerge">
<properties>
<property name="inputfile">FirstScriptField.odt</property>
<property name="outputfile">out.odt</property>
<property name="licenseCompany">Lizenznehmer</property>
<property name="licenseKey">xxxx-xxxx-xxxxxxx</property>
</properties>
</step>
11 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
2.2 CIB PLUG-IN FÜR LIBREOFFICE / APACHE OPENOFFICE
Die CIB software GmbH hat ein Plug-In als Extension für LibreOffice / Apache OpenOffice
entwickelt, welches Zusatzfunktionalitäten für das Einfügen und Arbeiten mit Feldern bietet. Das
Plug-In kann über den „Extension Manager“ hinzugefügt werden und ist dann über eine neue
Symbolleiste in LibreOffice / Apache OpenOffice ansprechbar.
Dieses Plug-In überträgt die aus Microsoft Word bekannte Funktion zum Einfügen neuer Felder
über die Tastenkombination STRG-F9 nach LibreOffice / Apache OpenOffice. So können neue Felder
entweder per Klick auf die Schaltfläche „Neuer Block“ (in der Symbolleiste) oder über die
Tastenkombination STRG-F9 eingefügt werden. Ein Feld besteht aus zwei Feldmarkierungen – einer
öffnenden und einer schließenden Klammer – die untrennbar zusammen gehören.
Neben der Vereinfachung beim Einfügen von Feldern unterstützt die Extension auch dabei, die
Integrität der eingefügten Feldmarkierungen bei gängigen Editier-Aktionen zu wahren: Das
ungewollte Löschen einzelner Feldmarkierungen mittels der Tasten Rück / Backspace oder ENTF /
DEL wird verhindert. Beim Ausschneiden (Cut), Einfügen (Paste) oder Kopieren (Copy) von
selektierten Feldern oder Feldteilen wird darauf geachtet, dass bestehende Felder vollständig
ausgeschnitten, überschrieben oder kopiert werden. Eine ungültige Selektion, wenn z.B. ein Teil
eines Feldes mit nur einer Feldmarkierung ausgewählt ist, wird dabei zunächst so ausgeweitet,
dass das vollständige Feld in der Auswahl liegt. Anschließend kann das Ausschneiden, Einfügen
oder Kopieren ohne Integritätsverlust wiederholt werden.
Anmerkungen:
·
Im Unterschied Microsoft Office wird aus Performance-Gründen nicht bereits während der
Selektion von Text darauf geachtet, dass Felder nur vollständig erfasst werden können. Die
Konsistenzprüfung findet nur bei den o.g. gängigen Editier-Aktionen statt.
·
Die Extension kann den Vorlagenersteller nicht vor allen möglichen Fehlersituationen
bewahren. Bei weniger gängigen Editier-Aktionen, wie z.B. dem Einfügen bestimmter
Inhalte über das Menü „Einfügen“, findet keine Integritätsprüfung statt. Beim Einfügen
dieser Inhalte wird die tatsächliche aktuelle Selektion durch den neuen Inhalt ersetzt, ggf.
ungeachtet enthaltener Feldmarkierungen.
·
Bei der Nutzung von Redo- und Undo-Funktionen (STRG+Y, STRG+Z) kann es ebenfalls zu
Inkonsistenzen kommen.
Nähere Informationen zur Verwendung von Feldern finden sich in Kapitel 3.2 und 3.3 in diesem
Dokument. Bei Interesse an der LibreOffice / Apache OpenOffice Plug-In Extension wenden Sie sich
bitte an den CIB Vertrieb.
12 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
3
SYNTAXGRUNDLAGEN
In diesem Kapitel erfolgt die Beschreibung von Grundlagen, die für das Verständnis und damit für
die Eingabe der Funktionen bei der Textprogrammierung benötigt werden. Es handelt sich dabei
sowohl um die Verwendung reservierter Zeichen als auch um die Klärung von Grundbegriffen.
3.1 ZEICHENERKLÄRUNG
Bei den in nachfolgender Tabelle erläuterten Zeichen handelt es sich um reservierte Zeichen, die in
der Textprogrammierung eine feste Bedeutung besitzen.
Hinweis:
Auf die Bedeutung der in den Beschreibungen verwendeten Begriffe (z.B. Skriptfeld) wird in den
folgenden Kapiteln genauer eingegangen.
Zeichen
Bedeutung
Beschreibung
{
Feldmarkierung
Per STRG-F9 in MS Word oder über das CIB
officeControlBlocks Plug-In in LibreOffice eingefügtes
Zeichen. Es handelt sich um ein Klammerzeichen, das
immer paarweise vorkommt.
Geschweifte Klammer
Normale textuelle Klammer, kommt in Skriptfeldern immer
paarweise vor.
#
Startzeichen Skriptfeld
Zeichnet ein Feld als Skriptfeld aus, dessen Inhalt von CIB
jsMerge ausgewertet wird.
‘
Escape-Zeichen
(Maskierungszeichen)
LibreOffice
Mit dem Apostroph als Maskierungszeichen können
andere geschützte Zeichen als Beginn eines Feldes
verwendet werden, z.B. das #.
‘
Escape-Zeichen
(Maskierungszeichen) MS
Word
In MS Word muss ein Inhaltsfeld mit dem Apostroph
eingeleitet werden, um das Feld von MS Word
Standardfeldern unterscheiden zu können.
|
Pipe-Zeichen
Das Fieldresult wird intern von LibreOffice getrennt durch
„|“ an den Feldbefehl angehängt.
}
{
}
3.2 VERWENDUNG VON FELDERN
Felder sind definierte Elemente, die für die Textprogrammierung in dynamischen Dokumenten
benötigt werden. Die in einem Dokument verwendeten Felder werden bei einem Mischvorgang
direkt durch den CIB jsMerge interpretiert und dynamisch in die Ausgabedatei umgesetzt.
13 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
Sie sind in ihrer Handhabung und Struktur ähnlich den aus MS Word bekannten Feldern.
Unterschieden wird hier jedoch zwischen sogenannten Skriptfeldern und Inhaltsfeldern. Details zu
deren Verwendung befinden sich in den nachfolgenden Kapiteln.
Ein Feld ist eine spezielle Komponente innerhalb eines Dokuments und hat folgenden Aufbau:
{ Feldinhalt }
Felder werden mit geschweiften Klammern {
} als Feldmarkierung umschlossen. Dabei ist zu
beachten, dass öffnende und schließende Klammer untrennbar zusammengehören.
Wichtig:
Felder können nur über die entsprechenden Befehle des Texteditors hinzugefügt werden. In MS
Word z.B. über die Tastenkombination STRG-F9, in LibreOffice über die Schaltfläche „Neuer Block“
des CIB officeControlBlocks Plug-In.
Manuell eingefügte geschweifte Klammern (ALT GR – 7 bzw. ALT GR - 0) werden nicht als
Feldmarkierungen gewertet.
3.2.1 Skriptfelder
Skriptfelder enthalten eine oder mehrere Anweisungen eines Skripts sowie zusätzliche Metadaten.
Eingeleitet werden Skriptfelder mit dem Nummernzeichen „#“ und haben folgende Struktur:
{#SkriptInhalt }
Der Text, der als „SkriptInhalt“ im Feld steht, wird von einem Skriptinterpreter ausgewertet. Dieser
„SkriptInhalt“ kann auch aus einem oder mehreren eingebetteten Feldern bestehen.
Beispiele:
{# text(ref(“Vorname”)) }
{# if(ref(“Vorname”)!=””) text(ref(“Vorname”)) }
3.2.2 Inhaltsfelder
Inhaltsfelder dienen dazu, Textinhalte, die innerhalb eines Skriptfeldes nicht ausgewertet werden
sollen, entsprechend zu kennzeichnen. So ist es möglich, den Quellcode des Skripts mit normalem
Textinhalt zu kombinieren. Das Skript entscheidet dann, welche Inhaltsfelder in das
Ergebnisdokument geschrieben werden und welche nicht. Inhaltsfelder haben den folgenden
Aufbau:
{‘NichtAuszuwertenderTextinhalt }
oder
14 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
{NichtAuszuwertenderTextinhalt } (Nur in ODT möglich)
„NichtAuszuwertenderTextinhalt“ kann jeglicher Textinhalt sein, der vom Texteditor unterstützt
wird, d.h. in allen Formaten (z.B. Rich Text) und Formatierungsmöglichkeiten (z.B. Tabellen).
Achtung:
Das Inhaltsfeld darf nicht mit einem Nummernzeichen „#“ beginnen, da es sonst als Skriptfeld
gewertet würde. Um trotzdem das Nummernzeichen als erstes sichtbares Zeichen im Inhaltsfeld zu
verwenden, wurde als Escape-Zeichen das Apostroph (‘) eingeführt. Nach dem Apostroph darf
jeglicher Textinhalt stehen, auch ein weiteres Apostroph.
Beispiel:
{#1 } dieses Feld wird als Skriptfeld ausgewertet
{‘#1 } das Nummernzeichen ist korrekt maskiert
Weitere Beispiele für Inhaltsfelder:
{‘Das ist der Textinhalt dieses Inhaltsfelds}
{‘Der Inhalt kann auch Tabellen enthalten:
Tabelle innerhalb
des Inhaltsfelds
und vieles mehr
}
Nur in ODT Vorlagen funktioniert auch dieses Inhaltsfeld: { Inhaltsfeld ohne Apostroph}
Hinweis zu MS Word:
In MS Word möchte man auch auf die von jeher in MS Word bekannten Felder wie { DATE }
zurückgreifen können. Diese MS Word Felder werden von CIB jsMerge aber nicht ausgewertet. Um
die drei verschiedenen Feldarten Skriptfelder, Inhaltsfelder und MS Word Felder entsprechend zu
unterscheiden wurde festgelegt, dass CIB jsMerge Inhaltsfelder nur erkennt, wenn das Feld mit
einem ‘ eingeleitet entsprechend maskiert ist.
Beispiele:
{ DATE }
Wird von CIB jsMerge nicht ausgewertet
{‘ein Inhalt }
Dies ist ein Inhaltsfeld. Der String „ein Inhalt“ wird in das Ergebnisdokument
geschrieben
{‘DATE }
Dies ist ein Inhaltsfeld. Der Inhalt „DATE“ wird in das Ergebnisdokument
geschrieben
15 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
3.3 GEMISCHTE SKRIPT- UND INHALTSFELDER
Die nachfolgenden Beispiele zeigen, wie Skript- und Inhaltsfelder zu einer sinnvollen Struktur
kombiniert werden können.
{# if(ref(“Vorname“)== “Bob“) {‘Hallo Bob!} else {‘Hallo zusammen!} }
Abhängig vom Inhalt der Variable “Vorname“ wird in das Ergebnisdokument entweder der Inhalt
des ersten Inhaltsfelds (“Hallo Bob“) oder der Inhalt des zweiten Inhaltsfelds (“Hallo zusammen“)
geschrieben.
Im nächsten Beispiel wird eine switch-Anweisung verwendet um 3 verschiedene, alternative
Textbausteine auszugeben, abhängig vom Inhalt der Variable “Vorname“.
{#switch(ref(“Vorname“)) {
case “Bob“: {‘Hallo Bob!} break;
case “Alice” {‘Hallo Alice!} break;
default: {‘Hallo zusammen!}
}}
16 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
4
BESCHREIBUNG DER CIB-FUNKTIONEN
4.1 KURZREFERENZ
Als Überblick eine Liste der Funktionen mit kurzer Beschreibung und deren Rückgabewerten:
Funktion
Beschreibung
fref(name, {formfieldAttributes})
Funktion ist eine Erweiterung von “text(ref(name))“. Es
können zusätzliche optionale Parameter angegeben werden.
„{formfieldAttributes}“: Dienen der Beschreibung von
Dialogfeldern, sie werden aktuell noch nicht ausgewertet.
text(text)
Kopiert den Wert des angegebenen Parameters „text“ in das
Zieldokument
ref(variableName) oder
getData(variableName)
Gibt den Wert der Variablen „variableName” zurück
include(name,
{includeAttributes})
Fügt die Vorlage “name” in das Ergebnisdokument
ein.“name” kann dabei mit relativem Pfad zum aktuellen
Verzeichnis angegeben werden, oder mit absolutem Pfad.
„{includeAttributes}“: Können optional angegeben werden
und steuern, wie die Vorlage einzufügen ist.
picture(name)
Funktion ist noch nicht implementiert.
Fügt die Grafikdatei „name” in das Ergebnisdokument ein.
„name” kann dabei mit relativem Pfad zum aktuellen
Verzeichnis angegeben werden, oder mit absolutem Pfad.
isEmptyRef(variableName)
Diese Funktion liefert „True“, wenn „variableName” eine
Länge von 0 hat oder die Variable nicht definiert ist;
andernfalls liefert sie „False“ zurück.
existsRef(variableName)
Liefert „True“, wenn die Variable „variableName” definiert
ist, andern falls „False“.
setData(variableName, value)
Belegt den Wert der Variablen „variableName” mit dem
angegebenen Wert „value“.
formatDate(formatString, date)
Liefert die in „formatString“ definierte Formatierung des
Datums „date“ zurück.
deDate()
Die Funktion erwartet ein Datum im Format
„dd.MM.yyyy“
17 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
Funktion
Beschreibung
resetRec(tablealias)
Positioniert auf den ersten Datensatz der Tabelle
„tablealias“.
hasRec(tablealias)
Liefert den Wert “wahr” zurück, wenn es den aktuell
positionierten Datensatz der Tabelle „tablealias“ gibt,
ansonsten „False“.
nextRec(tablealias)
Positioniert auf den nächsten Datensatz in der Tabelle
„tablealias“.
mergeRec(tablealias)
Gibt die Nummer des gerade gelesenen Datensatzes in der
Tabelle „tablealias“ zurück.
4.2 FUNKTIONEN IM DETAIL
4.2.1 text(text)
Die text(text)-Funktion kopiert den aus dem Parameter „text“ ermittelten Text in das
Ergebnisdokument. Der Parameter kann dabei auch ein von einer Funktion zurückgelieferter Wert
sein.
Der Text wird mit denselben Formatierungsoptionen eingefügt, mit der das Startzeichen ({) des
zugehörigen Skriptfelds formatiert ist.
Beispiele:
{# text(“Hallo Welt”)}
{# text(ref(“MeineVariable”))}
Hinweis:
In mehrzeiligem Text kann durch „\n“ ein neuer Paragraph erzeugt werden.
4.2.2 fref(name, {formfieldAttributes})
Die Funktion kopiert den Inhalt der als Parameter „name“ übergebenen Variablen in das
Ergebnisdokument. Das Verhalten dieser Funktion unterscheidet sich vom Aufruf „text(ref(name))“
durch die Möglichkeit, zusätzliche optionale Parameter angeben zu können. Er ist damit dem
„text(ref(name))“ vorzuziehen.
Der Parameter „{formfieldAttributes}“ wird zukünftig der Beschreibung von Dialogfeldern für eine
18 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
Restdatenerfassung dienen. Er wird allerdings aktuell noch nicht ausgewertet und kann damit
derzeit weggelassen werden.
4.2.3 include(name, { includeAttributes })
Mit der include()-Funktion wird die Vorlage mit dem angegebenen Dateinamen „name“ in das
Ergebnisdokument eingebunden. Der Dateiname kann dabei entweder den absoluten Dateipfad
enthalten, oder einen zum aktuellen Arbeitsverzeichnis relativen Dateipfad.
Die Dateiendung (z.B. .docx, .odt, .ott) kann auch weggelassen werden. In diesem Fall bestimmt
das Format der aufrufenden Vorlage, nach welchen Namensendungen gesucht wird. Ist die
aufrufende Vorlage ein ODT-Dokument, wird nach *.odt, *.ott, *.ODT und *.OTT gesucht. Ist die
aufrufende Vorlage ein DOCX-Dokument, wird nach *.docx, *.docm, *.DOCX und *.DOCM gesucht.
Als optionaler Parameter { includeAttributes } wird eine Hash-Tabelle erwartet. Folgende Optionen
werden innerhalb der Hash-Tabelle unterstützt:
Die Option „importPageSettings“ bestimmt, welche Seiten/Abschnittseigenschaften im aktuellen
Abschnitt des Ergebnisdokuments angewandt werden sollen. Folgende Werte sind für
importPageSettings möglich:
·
„autoHeaderFooter“: Wenn in der importierten Vorlage Kopf- oder Fußzeilen definiert sind,
so werden sie in das Ergebnisdokument übernommen. Sind keine Kopf- oder Fußzeilen
definiert, greifen die Kopf- und Fußzeilen Definitionen aus der aufrufenden Vorlage (falls
dort welche definiert sind). Andere Abschnitts- und Seiteneigenschaften werden nicht aus
der importierten Vorlage übernommen.
·
„all“: Neben den Kopf- und Fußzeilen werden alle Abschnitts- und Seiteneigenschaften aus
der importierten Vorlage übernommen. Dieser Wert kann damit z.B. genutzt werden, wenn
mehrere unabhängige Teildokumente mit allen ihren Eigenschaften hintereinander
verkettet werden sollen.
·
„none“: Weder Kopf- und Fußzeilen noch andere Abschnitts- und Seiteneigenschaften
werden aus der importierten Vorlage übernommen. Es wird nur der eigentliche Textinhalt
eingefügt.
Wird „importPageSettings“ nicht angegeben, greift der Standard Wert „autoHeaderFooter“.
Beispiele:
{# include(“abaustGruss2.odt”)}
{# include(“belehrungstext.odt”)}
{# include(“belehrungstext.odt”, {importPageSettings:”none”})}
19 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
4.2.4 ref(variableName) und getData(variableName)
Diese Funktionen sind identisch und liefern den Wert der Variable „variableName“ zurück. Um eine
Variable in diesen Funktionen verwenden zu können, muss sie in der Datenversorgung vorkommen
oder vorher mit „setData“ belegt worden sein. Ist das nicht der Fall, wird ein Fehler ausgegeben.
Beispiele:
{# ref(“meineVariable”)}
{# ref(“institut.EL_KIN_BEZ”)}
{# var i=1; ref(“institute.EL_KIN_BEZ” + i)}
Wenn der „variableName“ ein spezielles Trennzeichen enthält (Standardmäßig ist das der “.”),
dann wird die Variable als eine Tabellenvariable gewertet. Dabei beschreibt der erste Teil vor dem
Trennzeichen den Tabellen-Alias, der zweite Teil beschreibt den Namen des Knotens, der
ausgewählt werden muss.
Wenn die Variable nicht aufgelöst werden kann, bewirkt diese Funktion, dass die umliegende
Funktion mit einem Fehler beendet.
Achtung:
Soll der Rückgabewert im Kontext einer Nummernverarbeitung / als Zahl weiterverarbeitet werden,
so muss das ref mit der JavaScript-Standardfunktion Number() umgeben werden. Ansonsten wird
der Inhalt der Variable als String ausgewertet.
Beispiel:
{# setData(“meinBetrag”, 50)}
{# text(Number(ref(“meinBetrag”)) + 10)}
4.2.5 isEmptyRef(variableName)
Diese boolesche Funktion gibt „Wahr“ zurück, wenn die Variable „variableName“ eine Länge von 0
hat oder die Variable nicht aufgelöst werden kann. Andernfalls gibt sie „Falsch“ zurück.
Wenn der „variableName“ ein spezielles Trennzeichen enthält (Standardmäßig ist das der “.”),
dann wird die Variable als eine Tabellenvariable gewertet. Dabei beschreibt der erste Teil vor dem
Trennzeichen den Tabellen-Alias, der zweite Teil beschreibt den Namen des Knotens, der
ausgewählt werden muss.
20 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
4.2.6 existsRef(variableName)
Diese boolesche Funktion gibt „Wahr“ zurück, wenn die Variable „variableName“ aufgelöst werden
kann, d.h. in der Datenversorgung existiert. Andernfalls gibt die Funktion „Falsch“ zurück.
Wenn der „variableName“ ein spezielles Trennzeichen enthält (Standardmäßig ist das der “.”),
dann wird die Variable als eine Tabellenvariable gewertet. Dabei beschreibt der erste Teil vor dem
Trennzeichen den Tabellen-Alias, der zweite Teil beschreibt den Namen des Knotens, der
ausgewählt werden muss.
4.2.7 setData(variableName, value)
Die setData()-Funktion setzt den Wert der Variable „variableName“ auf den angegebenen Wert
„value“.
{# setdata(“meineVariable”, “Hallo”)}
{# var i=42; set(“meineVariable” + i, “Hallo”)}
Wenn der „variableName“ ein spezielles Trennzeichen enthält (Standardmäßig ist das der “.”),
dann wird die Variable als eine Tabellenvariable gewertet. Dabei beschreibt der erste Teil vor dem
Trennzeichen den Tabellen-Alias, der zweite Teil beschreibt den Namen des Knoten, der innerhalb
dieser Tabelle ausgewählt werden muss.
Es ist möglich, den Wert einer Tabellenvariablen zu überschreiben.
4.2.8 formatDate(formatString, date)
Die Funktion „formatDate(formatString, date)“ liefert die in „formatString“ definierte Formatierung
des Datums „date“ zurück.
Für „date“ werden die folgenden Varianten unterstützt:
deDate()
Funktion erwartet Datum im Format
„dd.MM.yyyy“ (dd und MM können auch ohne führende 0 geschrieben werden) oder
„dd.MM.“ (in diesem Fall wird das aktuelle Jahr ergänzt).
Bei Fehlern im String (z.B. keine 2 Punkte, keine Zahl, nicht existentes Datum wie
30.2.12) erfolgt eine JavaScript-Exception
new Date() Funktion liefert das aktuelle Datum und Uhrzeit, genau: Jahr, Monat, Tag, Stunde,
Minute, Sekunde, Millisekunde
Derzeit werden für „formatString“ die folgenden Formate unterstützt:
"t", "d", "tt", "dd", "MM", "M", "jjjj", "yyyy", "jj", "yy", "HH", "H", "mm", "m", "ss", "s"
21 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
Beispiele:
{# text(formatDate(“jjjj”,deDate(“28.08.2012”)))}
Mischt „2012“ in das Ausgabedokument ein
{# text(formatDate(“tt.MM.jj”, new Date()))}
Mischt das aktuelle Datum in der
angegebenen Formatierung ein, z.B.
„01.09.14“
{# text(formatDate(“jjjj”, enDate(“2012.08.10”)))}
Mischt „2012“ in das Ausgabedokument ein
4.2.9 Verarbeitung von Eingabedaten in Tabellenform
CIB jsMerge bietet die Möglichkeit einen oder mehrere gleichartige Eingabe-Datensätze (DatenTabelle) in einer Schleife einzulesen und deren Inhalte in das Ausgabedokument einzumischen. Im
Ausgabedokument wird damit eine dynamische Tabelle erzeugt. Die Eingabe-Datensätze können
sowohl aus CSV- als auch aus XML-Datenquellen kommen.
Für die Erzeugung von dynamischen Tabellen aus diesen Eingabedaten wurden spezielle
Funktionen implementiert. Die dynamische Tabelle wird über einen Aliasnamen angesprochen.
Dieser Aliasname wird definiert entweder über
·
Multi-Knoten in einer XML-Datenquelle oder
·
Name der CSV-Datenquelle (bei Single-CSV) oder
·
Eintrag in der Steuerdatei einer Multi-CSV-Datenquelle
Die Variable wird über den Namen angesprochen, unter dem sie in der Datenquelle definiert ist
(„variableName“). Um eine Variable aus einer Multi-Datenquelle eindeutig anzusprechen, muss der
Aliasname der Tabelle als Präfix vor den Variablennamen gesetzt werden.
Beispiel
{# ref(“<tablealias>.<variableName>”)}
Zur Veranschaulichung folgt ein Beispiel, in dem einige der für die Tabellenverarbeitung
eingeführten Funktionen enthalten sind:
{#while(hasRec(“Personen”)) {‘x
{#fref(“Personen.Anrede”))}
{#fref(“Personen.Name”))}
{#nextRec(“Personen”)}}}
Hinweis
Die Funktionen „resetRec()“, „hasRec()“, „nextRec()“ und „mergeRec()“ können auch ohne
„tablealias“ (oder mit „tablealias“=null) verwendet werden. In diesem Fall wirken diese
22 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
Funktionen auf sämtliche im Vorlagen-Projekt verwendeten dynamischen Tabellen.
Anwendungsbeispiele dafür wären das Erstellen von Serienbriefen oder Ausfertigungen.
4.2.9.1 resetRec(tablealias)
Die Funktion „resetRec(tablealias)“ positioniert auf den ersten Datensatz der Tabelle „tablealias“.
Wird diese Funktion ohne den Parameter „tablealias“ oder mit „tablealias“=null verwendet,
werden alle vorhandenen Tabellen auf den ersten Datensatz positioniert. Damit stehen auch alle
Datensatz-Zähler (=Rückgabewert der Funktion „mergeRec(…)“) auf 1.
4.2.9.2 hasRec(tablealias)
Die Funktion „hasRec(tablealias)“ liefert den Wert “wahr” zurück, wenn es den aktuell
positionierten Datensatz der Tabelle „tablealias“ gibt. Ist die Tabelle leer oder das Tabellenende
erreicht, (z.B. nach „nextRec(…)“), gibt die Funktion „falsch“ zurück.
Wird diese Funktion ohne den Parameter „tablealias“ oder mit „tablealias“=null verwendet, liefert
die Funktion „hasRec()“ nur dann den Wert “falsch” zurück, wenn das Ende aller Tabellen erreicht
ist. Ansonsten ist das Ergebnis „wahr“.
4.2.9.3 nextRec(tablealias)
Die Funktion „nextRec(tablealias)“ liest den nächsten Datensatz in der Tabelle „tablealias“.
Die Funktion verhält sich wie „{ next tablealias }“ mit dem Unterschied, dass die Angabe des
Aliasnamens obligatorisch ist. D. h. Variablen müssen immer mit Präfix angesprochen werden:
{#ref("<tablealias>.<variableName>"))}
Beispiel:
{# text(ref(“Person.CustomerID”));
nextRec(“Person”);
text(ref(“Person.CustomerID”));}
In diesem Beispiel wird die „customerID“ des ersten und zweiten Datensatzes in das
Ausgabedokument eingemischt.
Wenn die Funktion „nextRec(tablealias)“ das Ende der Tabelle „tablealias“ erreicht, setzt sie alle
Variablen dieser Tabelle auf leer (d.h. “”) und die Funktion „hasRec(tablealias)“ wird beim
nächsten Aufruf “falsch” zurückliefern, der Zähler „mergeRec(tablealias)“ auf „0“ gesetzt. Weitere
Aufrufe der Funktion „nextRec(tablealias)“ ändern nichts an diesem Zustand.
Wenn die Funktion „nextRec()“ ohne den Parameter „tablealias“ oder mit „tablealias“=null
23 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
verwendet wird, wird für alle vorhandenen Tabellen auf den nächsten Datensatz weitergeschaltet.
In diesem Fall gibt es einen globalen internen Zähler, der alle Aufrufe der Funktion „nextRec()“
zählt. Dieser Zähler beginnt bei 1 und wird durch die Funktion „resetRec()“ auf 1 zurückgesetzt. Er
zählt nicht mehr weiter, wenn das Ende aller Tabellen erreicht ist.
4.2.9.4 mergeRec(tablealias)
Die Funktion „mergeRec(tablealias)“ gibt die Nummer des gerade gelesenen Datensatzes in der
Tabelle „tablealias“ zurück (beginnend bei 1 für den ersten gelesenen Datensatz).
Beispiel:
{#while(hasRec(“Personen”)) { if((Number(mergeRec(“Personen”)) % 2) == 0) {‘x
{#fref(“Personen.Anrede”)}
{#fref(“Personen.Vorname” +
fref(“Personen.Nachname”)}
{#fref(“Personen.Anrede”)}
{#fref(“Personen.Vorname” +
ref(“Personen.Nachname”)}
} else {‘x
} nextRec(“Personen”);}}
Wird das Beispiel ohne den Parameter „tablealias“ oder mit „tablealias“=null ausgeführt, gibt die
Funktion den Stand des internen globalen Zählers zurück, wie er durch die Funktion „nextRec()“
verwendet wird.
Bei Tabellenüberlauf wird „mergeRec(tablealias)“ auf „0“ gesetzt.
4.2.9.5 Besonderheiten bei den erstellten dynamischen Tabellen
Die folgenden Besonderheiten im Zusammenhang mit dynamischen Tabellen in LibreOffice, wie in
den Beispielen in diesem Dokument zu sehen, gilt es zu beachten:
Um ausgeblendete Absätze in LibreOffice zu realisieren, muss in einem auszublendenden Absatz
mindestens ein Zeichen (in unseren Beispielen: „x“) vorkommen. Dieses Zeichen muss dann
„ausgeblendet“ formatiert werden. Absatzmarken können, anders als in MS Word, nicht als
„ausgeblendet“ gekennzeichnet werden.
Hinweis:
Im Ausgabedokument entsteht für jeden Datensatz eine einzeilige Tabelle. Im Eingabedokument
müssen die Absätze vor der Tabelle „ausgeblendet“ formatiert sein, damit die Einzelzeilen im
Ausgabedokument optisch wie eine große Tabelle wirken:
24 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
{#while(hasRec(“Personen”)) {‘x
{#fref(“Personen.Anrede”))}
{#fref(“Personen.Name”))}
{#nextRec(“Personen”)}}}
(siehe auch das Beispiel in Kapitel 4.2.9.4)
Im Gegensatz zu MS Word interpretiert LibreOffice diese Tabellenzeilen nicht als eine einzige
Tabelle.
Damit wird auch eine vorher definierte Tabellenüberschrift nicht auf die Gesamtheit der einzelnen
Tabellenzeilen angewendet, d.h. sie erscheint nur einmalig, aber nicht auf den Folgeseiten.
4.3 RESERVIERTE VARIABLEN UND FUNKTIONEN
Die folgenden Variablennamen sind aktuell in CIB jsMerge nicht belegt. Ihre Umsetzung ist aber für
spätere Versionen geplant:
Funktion oder Variable
Beschreibung
data
Name reserviert; Noch nicht implementiert.
ERROR
Name reserviert; Noch nicht implementiert.
OUTPUTMODE
Name reserviert; Noch nicht implementiert.
25 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
5
JAVASCRIPT KONTROLLSTRUKTUREN
JavaScript Anweisungen stellen den größten Anteil der Textprogrammierung dar. Eine umfassende
Beschreibung der Syntax und Anwendung von JavaScript wird hier nicht behandelt. Einen
detaillierten Überblick liefern einschlägige online-Dokumentationen wie beispielsweise:
http://www.w3schools.com.
https://developer.mozilla.org/de/docs/JavaScript
Im Folgenden soll kurz auf die im Kontext dieser Befehlsreferenz relevantesten JavaScript
Kontrollstrukturen eingegangen werden. Diese Strukturen sind auch in der RTF-Programmierung
entsprechend abgebildet.
5.1 BEDINGTE ANWEISUNGEN
Bedingte Anweisungen werden nur dann ausgeführt, wenn die festgelegte Bedingung erfüllt ist. Am
Beispiel der if-Anweisung lautet die Syntax grundsätzlich:
if (Bedingung) {
Anweisung
}
Um das Verhalten bei nicht-Erfüllen der Bedingung ebenfalls zu steuern, kann die if-Anweisung mit
einer else-Anweisung kombiniert werden:
if (Bedingung) {
Anweisung1
}
else {
Anweisung2
}
Zur Veranschaulichung wird das Beispiel aus Kapitel 3.3 wiederholt:
{# if(ref(“Vorname“)== “Bob“) {‘Hallo Bob!} else {‘Hallo zusammen!} }
Ist der Wert der Variablen „Vorname“ Bob, so wird „Hallo Bob!“ ausgegeben, andernfalls wird
„Hallo zusammen!“ ausgegeben.
26 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
5.2 SCHLEIFENANWEISUNGEN
Schleifenanweisungen werden solange ausgeführt, wie eine festgelegte Bedingung wahr ist. Am
Beispiel der while-Schleife lautet die Syntax:
while (Bedingung) {
Anweisung
}
Zur Veranschaulichung das Beispiel aus Kapitel 4.2.9:
{#while(hasRec(“Personen”)) {‘
{#fref(“Personen.Anrede”))}
{#fref(“Personen.Name”))}
{#nextRec(“Personen”)}}}
Solange Datensätze in der Datenversorgung „Personen“ vorhanden sind, werden die in der Tabelle
angegebenen fref()-Funktionen ausgeführt und mit der nextRec()-Funktion auf den nächsten
Datensatz in der Datenversorgung weitergeschaltet.
Die Kombination von while-Schleife und if-Anweisung ist in Kapitel 4.2.9.4 Und im
Anwendungsbeispiel im Kapitel 8 exemplarisch dargestellt.
5.3 VERGLEICHSOPERATOREN
Es können alle in JavaScript erlaubten Vergleichsoperatoren (z.B. ==,!=, >, <,) verwendet werden.
Eine detaillierte Auflistung und Erklärung ist in einschlägiger, online verfügbarer JavaScript
Dokumentation zu finden.
Beispiele:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Opera
tors
http://www.w3schools.com.
https://developer.mozilla.org/de/docs/JavaScript
27 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
6
JAVASCRIPT FUNKTIONEN
Innerhalb der Vorlagen bzw. in der Skriptdatei besteht die Möglichkeit, in der Skriptsprache
JavaScript eigene Funktionen zu schreiben. Auf die Konventionen der Skriptsprache JavaScript geht
diese Befehlsreferenz nicht ein. Dazu verweisen wir auf einschlägige, verfügbare onlineDokumentationen wie beispielsweise:
http://www.w3schools.com.
https://developer.mozilla.org/de/docs/JavaScript
Eigene Funktionen können direkt in der Vorlage (=lokale Funktion) definiert werden oder in
(genau) einer Skriptdatei, die im Aufruf an CIB jsMerge übergeben werden kann (=globale
Funktion).
Dazu werden die benötigten Funktionen in einem Skriptblock definiert, z.B.:
{# myGlobalFunc = function(){ … } }
6.1 GLOBALE FUNKTIONEN
In der Skriptdatei können globale Funktionen und Variablen über folgende Syntax definiert
werden:
myGlobalFunc = function() { ... }
oder
function myGlobalFunc() { ... }
oder
i=42
Globale Funktionen und Variablen haben im gesamten Dokumentenprojekt Gültigkeit. Sie können
allerdings durch gleichnamige Funktionen/Variablen überschrieben werden. Damit ist die globale
Funktion/Variable in dem Template, in dem die lokale Funktion/Variable definiert wurde, nicht
mehr gültig (aber in allen anderen Bausteinen).
Die Funktion wird referenziert über myGlobalFunc(…). Z.B. text(myGlobalFunc(…))
6.2 LOKALE FUNKTIONEN
Innerhalb der Vorlage können lokale Funktionen und Variablen über folgende Syntax definiert
werden:
{# this.myFunc = function() { ... }}
28 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
{# this.i = 42}
Der Vorteil lokaler Funktionen ist, dass sie nur in dem Template gelten, in dem sie definiert wurden
und hier geschützt sind. Sie können nicht durch Funktionen anderer Templates überschrieben
werden. Andere Templates “sehen” diese Funktionen nicht und können damit gleichnamige
Funktionen und Variablen verwenden sich gegenseitig zu beeinflussen.
Die Funktion wird referenziert über this.myFunc(…), z.B. text(this.myFunc(…))
6.3 EXPORT VON LOKALEN FUNKTIONEN
Im Template können lokale Funktionen und Variablen über folgende Syntax exportiert werden:
{# this.exports.myFunc = function() { ... }}
{# this.exports.i = 42}
Hierbei handelt es sich ebenfalls um eine lokale Funktion/Variable innerhalb eines Templates, die
aber durch den Export auch allen inkludierten Templates bekannt gemacht wird.
Die Funktion/Variable ist für dieses Template geschützt, könnte aber in einem inkludierten
Template überschrieben werden. Die überschriebene Funktion ist dann aber nur in dem UnterTemplate überschrieben (durch Vererbung) und ein Überschreiben überträgt sich nicht auf das
Haupttemplate, das die Funktion ursprünglich definiert hat.
So sind solche Funktionen besser gegen ungewolltes Überschreiben geschützt.
Die Funktion wird ebenfalls referenziert über this.myFunc(…), z.B. text(this.myFunc(…))
6.4 SUPPORT DER JAVASCRIPT-FUNKTIONEN
Die Möglichkeit, das Gesamtprojekt bzw. einzelne Vorlagen durch eigene JavaScript-Funktionen zu
erweitern, bietet dem Anwender ein hohes Maß an Flexibilität. Allerdings impliziert diese
Flexibilität beim Anwender eine erhöhte Eigenverantwortung für seine Dokumentenprojekte.
Bei der Inanspruchnahme des CIB Supports ist die aktuelle Vertragslage des jeweiligen Kunden zu
beachten.
Achtung:
Es ist dem Anwender auch möglich, die Standard-CIB-Funktionen (wie z.B. fref) durch eigene
JavaScript-Skripte zu überlagern. Damit verliert die in dieser Befehlsreferenz enthaltene
Funktionsbeschreibung ihre Gültigkeit. Die Pflege und Wartung der Dokumentenprojekte wird
damit erheblich aufwändiger.
Wir empfehlen dringend, auf eine Überlagerung der Standard-Funktionen zu verzichten und eigene
JavaScript-Skripte auch mit einem eigenen Namen zu kennzeichnen.
29 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
7
UNTERSTÜTZTE INHALTE UND EIGENSCHAFTEN
Sowohl ODF als auch Office Open XML beschreiben eine enorme Vielzahl an Inhaltselementen und
möglichen Eigenschaften. Nicht alle dieser Elemente und Eigenschaften sind für die Standard
Korrespondenzerstellung nötig. Die folgende Auflistung gibt eine Übersicht über die Unterstützung
von Elementen:
Element oder Eigenschaft
ODT-Unterstützung
DOCX-Unterstützung
Text und Zeichenformatierung
Ja
Ja
Zeichenformatvorlagen
Ja
Ja
Absatz und
Absatzformatierung
Ja
Ja
Tabelle und
Tabellenformatierung
Grundsätzlich ja.
Eine dynamisch erzeugte
Tabelle wird derzeit nicht als
eine physikalische Tabelle
erzeugt.
Grundsätzlich ja.
Eine dynamisch erzeugte
Tabelle wird derzeit nicht als
eine physikalische Tabelle
erzeugt.
Seiten- und
Abschnittsformatierung
Ja
Ja
Kopf- und Fußzeilen
Ja
Noch nicht freigegeben
Grafiken, Text- oder
Grafikrahmen,
Ja
Ja
Listen und
Listeneigenschaften/Zähler
Nicht freigegeben
Nicht freigegeben
Felder
Standardfelder werden nicht
ausgewertet
MS Office Felder werden nicht
ausgewertet
Ausgewertet werden:
Skriptfelder
Ausgewertet werden:
Skriptfelder
Inhaltsfelder
Inhaltsfelder
30 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
Element oder Eigenschaft
ODT-Unterstützung
DOCX-Unterstützung
Anpassen von Element-IDs /
Namen:
Einige Elemente besitzen IDs
oder Namen, die beim Mischen
oder bei Wiederholungen
eindeutig gemacht werden
müssen.
Für folgende Elemente wird eine
Umbenennung aktuell
vorgenommen:
Für folgende Elemente wird eine
Umbenennung aktuell
vorgenommen:
Formatvorlagen (Styles)
Formatvorlagen (Styles)
Keine Anpassung erfolgt derzeit
für:
Keine Anpassung erfolgt derzeit
für:
Tabellen
Tabellen
Grafiken
Grafiken
Listen
Listen
Lesezeichen
Lesezeichen
An der Seite verankerte
Elemente
Grundsätzlich nicht umsetzbar.
Empfehlung:
An der Seite verankerte
Elemente vermeiden
Grundsätzlich nicht umsetzbar.
Empfehlung:
An der Seite verankerte
Elemente vermeiden
Inhalts-, Abbildungs- und
Literaturverzeichnisse
Nicht freigegebenen
Nicht freigegeben
Eingebettete Fonts
Nein
Nein
31 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
8
FÜR RTF-UMSTEIGER: GEGENÜBERSTELLUNG DER
FUNKTIONEN
Für Anwender, die aus dem Umfeld MS Word und RTF kommen, ist es hilfreich zu sehen, wie die
bereits bekannten Feldbefehle im ODT-Umfeld umgesetzt werden.
8.0.1 Abbildung von RTF-Feld-Befehlen auf die Skriptlogik
In diesem Abschnitt wird gezeigt, wie die Logik der RTF-Feldbefehle mit der neuen Skriptlogik
abgebildet werden kann. In der nachstehenden Tabelle finden Sie eine Liste aller RTF-Felder, wie
sie von CIB merge verarbeitet werden und die dazugehörige Abbildung in Skriptlogik:
Feldbefehl ( engl. / dt.)
Beschreibung (aus dem Leitfaden
CIB merge)
Entsprechung in ODT bzw.
Skriptlogik (Beispiele in
JavaScript)
COMPARE / VERGLEICH
Vergleicht zwei Werte und gibt den JavaScript: Boolscher Vergleich
numerischen Wert 1 zurück, wenn
Beispiel: (a==b)
der Vergleich wahr ist, und 0
(Null), wenn der Vergleich falsch
ist.
DATE / AKTUALDAT
Fügt das aktuelle Datum ein.
Siehe:
formatDate(formatString, date).
IF / WENN
Vergleicht Argumente unter
Berücksichtigung bestimmter
Bedingungen.
Kann optional zu einem
Schleifenbefehl erweitert werden
(SOLANGE).
JavaScript: IF Befehl.
Fügt einen Text aus einer Datei
ein.
Siehe:
include(name,
INCLUDETEXT /
EINFÜGENTEXT
Beispiel: if(a==b){
… }else{ … }
while(a==b) { … }
(für
SOLANGE)
{includeAttributes})
Beispiel:
include(„mydoc.odt“)
32 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
Feldbefehl ( engl. / dt.)
MERGEFIELD /
SERIENDRUCKFELD
Beschreibung (aus dem Leitfaden
CIB merge)
Legt einen Platzhalter mit Namen
fest, der später durch einen
angelieferten variablen Inhalt
ersetzt wird.
Entsprechung in ODT bzw.
Skriptlogik (Beispiele in
JavaScript)
Siehe:
fref(name, {formfieldAttributes})
oder
text(ref(name))
Beispiel:
text(ref(“institute.EL_KIN_BEZ”
))
MERGEREC / DATENSATZ
Fügt die Nummer des aktuellen
Seriendruck-Datensatzes ein.
Siehe:
mergeRec()
Beispiel:
mergeRec()
MERGEREC ?
MERGEREC „tablealias“
Liefert den bool’schen Wert ‚1‘,
wenn noch ein Datensatz des
Seriendrucks vorhanden ist.
Standardmäßig ist der Wert ‚0‘
eingestellt.
Siehe:
hasRec()
Fügt die Nummer des aktuellen
Datensatzes einer Tabelle ein.
Siehe:
mergeRec(tablealias
Beispiel:
hasRec()
Beispiel:
mergeRec(„Personen“)
MERGEREC "?tablealias"
Liefert 0 zurück, wenn keine
weiteren Datensätze in dieser
Tabelle vorhanden sind.
Siehe:
hasRec(tablealias)
Beispiel:
while(hasRec(„Personen“)) …
NEXT / NÄCHSTER
Geht zum nächsten Datensatz oder
Knoten in der Datenversorgung.
Siehe:
nextRec()
Beispiel:
nextRec()
NEXT -
Das Zurücksetzen (reset) aller
Siehe:
Steuerdateien auf den "nullten"
resetRec()
Datensatz. Die Variableninhalte
Beispiel:
werden gelöscht. Die Werte des
resetRec()
ersten Datensatzes werden erst mit
{NEXT} wieder eingelesen.
33 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
Feldbefehl ( engl. / dt.)
NEXT aliasname
Beschreibung (aus dem Leitfaden
CIB merge)
Geht zum nächsten Datensatz oder
Knoten in der durch aliasnamen
beschriebenen Datenliste
Entsprechung in ODT bzw.
Skriptlogik (Beispiele in
JavaScript)
Siehe:
nextRec(tablealias)
Beispiel:
nextRec(„Personen“)
NEXT –aliasname
NEXT aliasname
Diese beiden Kommandos setzten
die Datenliste zurück auf den 1.
Datensatz
Siehe:
resetRec(tablealias)
Beispiel:
resetRec(„Personen“)
NEXTIF / NWENN
Geht zum nächsten Datensatz oder
Knoten in der Datenversorgung,
wenn eine bestimmte Bedingung
erfüllt ist.
Gültig beim Seriendruck und beim
Iterieren von Listen
QUOTE / ANGEBEN
Fügt einen Text in das Dokument
ein.
JavaScript:
if(<condition>) nextRec()
oder
if(<condition>)
nextRec(tablealias)
Siehe:
text(text)
Beispiel:
text(„Hallo world“)
REF / REF
Legt einen Platzhalter mit Namen
fest, der später durch einen
angelieferten variablen Inhalt
ersetzt wird.
Siehe:
fref(name, {formfieldAttributes})
oder
text(ref(name))
Beispiel:
text(ref(“institute.EL_KIN_BEZ”
))
REF "?variable"
Liefert 0 zurück, wenn die Variable Siehe:
nicht vorhanden ist, ansonsten 1.
existsRef(variableName)
Beispiel:
existsRef(„<variable>“)
SET / BESTIMMEN
Weist einer Textmarke einen neuen Siehe:
Text zu.
setData(variableName, value)
Beispiel:
setData(„myVar“, 1)
34 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
Feldbefehl ( engl. / dt.)
SKIPIF / ÜBERSPRINGEN
Beschreibung (aus dem Leitfaden
CIB merge)
Überspringt einen Datensatz oder
Knoten in der Datenversorgung
entsprechend einer Bedingung.
Und erzeugt für diesen Datensatz
auch kein Ausgabedokument im
Seriendruck.
Entsprechung in ODT bzw.
Skriptlogik (Beispiele in
JavaScript)
JavaScript:
if(<condition>) skip()
Nur beim Seriendruck gültig. Nicht
auf Listen anwendbar.
Fügt die aktuelle Uhrzeit ein.
TIME / ZEIT
TIME wird durch CIB merge immer
ausgewertet. In manchen Fällen ist
es erwünscht, dass CIB format die
Ersetzung macht. Dann verwendet
man den \* keep-Schalter.
= Ausdruck / Expression
Berechnet das Ergebnis eines
Ausdruckes (=Formeln)
Siehe:
formatDate(formatString, date).
JavaScript Rechenausdrucke
Beispiele:
(3-1) oder
(5*10) oder
(10%2) oder
(Number(ref(“myNumber”)) + 10)
Achtung:
In JavaScript wird der “+”Operator per Default für die String
Konkatenation benutzt. Die
Operatoren müssen mit Number()angegeben werden um eine
Addition zu erzwingen.
Es folgen einige Beispiele dafür, wie RTF-Ausdrücke in Skript-Felder umgesetzt werden.
MS-Office Feldbefehle
Skript Logik (Beispiele in JavaScript)
Einfaches REF:
{#
text(ref(“myVariable))
{#
setData(“myVar”, “Hallo”)
{
REF “institute.EL_KIN_BEZ”
Einfaches SET:
{
SET myVar “Hallo”
}
}
}
}
35 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
MS-Office Feldbefehle
Skript Logik (Beispiele in JavaScript)
REF mit Datum-Formatschalter:
{#
text(formatDate(“tt.mm.jjjj”, ref(“myDate”)))
{#
if(ref(“myVariable)==””)
{
REF myDate \@ “tt.mm.jjjj”
}
Einfaches “IF-then”-Konstrukt:
{
IF
{
REF “myVariable”
variable is empty”
}
}
= “” “My
{My
variable is
empty}}
Hier würde die Funktion mit Fehler beenden, wenn
“myVariable“ nicht aufgelöst werden kann.
}
oder
{#
if(isEmptyRef(“myVariable))
{My
variable is
empty}}
Hier würde die Funktion nicht mit Fehler beenden,
wenn “myVariable“ nicht aufgelöst werden kann
Abfrage auf leere Variable:
{
IF
{
REF “myVariable”
REF myVariable”}”
{#
}
!= “” “{
IF <condition> “then-part” “else-
part”
text(ref(“myVariable”)}
}
Einfaches “IF-then-else”-Konstrukt:
{
if(!isEmptyRef(“myVariable”))
{#
}
if(<condition>)
{‘then-part}
else
{‘else-part}
}
Abfrage auf Existenz einer Variablen
(und Definieren, falls sie nicht existiert):
Mehrere dieser Konstrukte können in einem Scriptfeld
abgehandelt werden:
{
{#if(!existsRef(„myVar“))
IF myVar = “myVar”
“Hallo”
{SET
myVar
set(„myVar“, „Hallo“);
if(!existsRef(„myVarXXX“))
}}
oder:
{
IF
set(„myVarXXX“, „Hallo“);}
{
REF ?myVarXXX
myVarXXX “Hallo”
}
= 0
{
SET
}}
Einfacher Rechenausdruck:
{
SET myVar
{
= 1 +2 + 3
SET myVar
+ 3
{
=
{
REF myNumber
}}
String-Konkatenation:
{
REF “var{ REF myNumber
set(“myVar”, 1 + 2 + 3)
}
{#
set(“myVar”, Number(ref(“myNumber”)) + 2 + 3)
}}
Rechenausdruck mit Variable:
{
{#
}
+ 2
}
In JavaScript müssen Zahlenvariablen mit “Number()”
angegeben werden um sie von Stringvariablen zu
unterscheiden. Default für “+” ist eine StringKonkatenation.
{#
text(ref(“var” + ref(myNumber)))
}
}” }
36 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
MS-Office Feldbefehle
Skript Logik (Beispiele in JavaScript)
SET-IF:
{#
{
SET “myVar”
“Er”
{
IF <condition> “Sie”
}}
setData(“myVar”, (<condition>)? “Sie” : “Er”)
oder
{#
if(<condition>) setData(“myVar”, “Sie”);
else setData(“myVar, “Er”);
Compare:
{
{#
{ ={ COMPARE { REF
= 1} && { COMPARE { REF b } = 2}
{ COMPARE { REF c } = 3}}}
set “valid”
SOLANGE-Schleife:
{
{
if <condition> “…content…
next …
}”
\* SOLANGE
a
}
}
}
setData(“valid”, (ref(“a”)==1) && (ref(“b”)==2)
}
&& (ref(“c”)==3))
&&
{#
{#
while(<condition>)
{#
resetRec(“aliasname”)
{#
include(“template.odt”)
nextRec(…)
{…content…
}}}
}
Next –aliasname:
}
{ next –aliasname }
Einfacher INCLUDETEXT:
{
INCLUDETEXT “template.rtf”
}
}
37 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
9
ANWENDUNGSBEISPIEL
Im Folgenden wird ein komplettes, kurz gehaltenes Beispiel dargestellt. Die beteiligten Dateien
sind dabei vollständig abgebildet.
Startpunkt ist hier das Wurzeldokument inputDoc.odt . Daten werden aus einer CSV-Datei
(Personen.csv) eingemischt und zusätzlich wird ein weiterer Textbaustein, die Datei Baustein.odt,
eingebunden.
CIB jsMerge wird in diesem Beispiel über die CIB runshell auf Kommandozeilenebene aufgerufen.
Hier werden die Übergabeparameter in der Skriptdatei script.js angegeben:
Aufruf:
Cibrsh.exe –js scriptfile=script.js
script.js:
In der Skriptdatei werden für dieses Beispiel nur die benötigten Übergabeparameter angegeben. In
diesem Fall sind das Name des Wurzeldokuments, Name der Ausgabedatei und Name der CSVDatei.
setProperty("licenseCompany", "Lizenznehmer", true);
setProperty("licenseKey", "xxxx-xxxxx-xxxxxxxx", true);
setProperty("inputfile", "./inputDoc.odt", true);
setProperty("outputfile", "./outputDoc.odt", true);
setProperty("datafile", "Personen.csv", true);
38 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
inputDoc.odt:
Zu Beginn des Wurzeldokuments wird die lokale Funktion „upperCase“ definiert. Diese wird später
innerhalb einer „while“-Schleife aufgerufen, um in der dritten Tabellenspalte die Namen der aus
der „Personen.csv“ eingemischten Personen in Großbuchstaben abzubilden.
Die nächste Feldanweisung mischt das aktuelle Datum über die Funktion „formatDate()“ ein.
Dann wird mit der „include()“ Feldanweisung der zusätzliche Baustein „Baustein.odt“
eingebunden.
Das nun folgende Konstrukt erzeugt mit Hilfe der „while“-Schleife dynamisch eine Tabelle und füllt
diese mit den Personendaten aus der Datenversorgung „Personen.csv“. Dabei werden so oft neue
Tabellenzeilen angelegt, wie Einträge in der Datei „Personen.csv“ vorhanden sind. Realisiert wird
dies über die Funktionen „hasRec()“ und „nextRec()“.
Die erste Tabellenspalte im Wurzeldokument zeigt die Verwendung einer „if“-Bedingung zur
Auswahl der passenden Anrede. Die zweite Spalte demonstriert die reine Anzeige des Wertes der
Variable „Personen“ über die „fref()“-Funktion, während in der dritten Spalte mittels der „ref()“Funktion der Wert der Variable „Nachname“ an die Funktion „upperCase“ übergeben wird.
Das Dokument inputDoc.odt ist auf der folgenden Seite abgebildet.
39 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
inputDoc.odt
{ # this.upperCase = function(name) { text(name.toUpperCase());} }
Ausgabe des Aktuellen Datums:
München, den { #text(formatDate(„tt.MM.jj“, new Date() )) }
Text aus einem weiteren Baustein einfügen:
{ # include(„Baustein.odt“) }
Die nachfolgende Tabelle wird dynamisch über eine while-Schleife erzeugt. Dabei werden
die Daten aus der CSV Datei Personen.csv verwendet und so viele Tabellenzeilen erzeugt,
wie Einträge in der CSV vorhanden sind.
{ #while(hasRec(„Personen“)){ '
{#if(ref(„Geschlecht“)==“m“) { #fref(„Vorname“) }
{ 'Herr } else{ 'Frau } }
{ # this.upperCase
(ref(„Nachname“)) }
{ #nextRec(„Personen“) } } }
40 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
Baustein.odt:
Der Inhalt der Datei „Baustein.odt“ wird an der im Wurzeldokument mithilfe der „include()“Anweisung angegebenen Stelle eingefügt:
Dies ist ein Hinweistext, der im Textbaustein „Baustein.odt“ definiert ist und mit dem
include-Befehl ins Ausgabedokument eingebaut wird.
Personen.csv
Diese Datei dient als Datenversorgung. In der ersten Zeile werden die Variablennamen definiert,
die folgenden Zeilen enthalten dann jeweils die Datensätze.
Hinweis:
Die CSV-Datei muss UTF-8 codiert sein, damit eventuelle Umlaute und Sonderzeichen korrekt
gelesen werden.
Vorname;Nachname;Geschlecht
Peter;Meier;m
Hans;Müller;m
Anne;Kurz;f
Tim; Berg;m
outputDoc.odt:
Nach dem Aufruf von CIB jsMerge wird das auf der nächsten Seite dargestellte Dokument erzeugt,
in dem alle Daten wie oben beschrieben eingemischt wurden:
41 | 42
CIB software GmbH > Technical Support & Services > Befehlsreferenz CIB jsMerge >
outputDoc.odt
Ausgabe des Aktuellen Datums:
München, den 01.09.14
Text aus einem weiteren Baustein einfügen:
Dies ist ein Hinweistext, der im Textbaustein „Baustein.odt“ definiert ist und mit dem
include-Befehl ins Ausgabedokument eingebaut wird.
Die nachfolgende Tabelle wird dynamisch über eine whileSchleife erzeugt. Dabei werden
die Daten aus der CSV Datei Personen.csv verwendet und so viele Tabellenzeilen erzeugt,
wie Einträge in der CSV vorhanden sind.
Herr
Peter
MEIER
Herr
Hans
MÜLLER
Frau
Anne
KURZ
Herr
Tim
BERG
42 | 42