Word-Vorlagen
Vorlagen-Funktionen
Zehn Hilfen stehen in jedem Befehl ohne Import zur Verfügung.
| Name | Zweck |
|---|---|
_ | Lodash. Listen gruppieren, sortieren, Bereiche erzeugen |
pluralize | Sprachabhängige Singular- und Pluralformen |
imask | Zahlen und Zeichenketten formatieren |
combine | Werte verbinden, mit Vor- und Nachtext |
img | Bild laden und rendern |
fdate | ISO-Datum formatieren |
fcheck | Schalterfeld als Text |
ffmt | Formatierten Feldwert ausgeben (Ausgabe-Formatter) |
ui | Ansichtseinstellungen (keine Funktion, ein Objekt) |
deco | Feld-Anmerkungen in den Bericht übertragen |
_: Lodash
Das komplette Lodash . Häufig: _.range, _.groupBy, _.sortBy, _.uniq.
{# FOR i IN _.range(0, eingang.length) #} … {# END-FOR i #} {#! gruppen = _.groupBy(objects, o => o[`RaumNr`] ?? `ohne Raum`) #}
pluralize(sprache, wert, formen)
Wählt die Form passend zur Zahl. Registrierte Sprachen: de und en.
{#$o[`Anzahl Teile`]#} {#pluralize(`de`, $o[`Anzahl Teile`], { one: `Teil`, other: `Teile` })#} {#objects.length#} {#pluralize(`de`, objects.length, { one: `Objekt`, other: `Objekte` })#}
imask(wert, felddefinition?, eigeneMaske?)
Formatiert Zahlen und Zeichenketten nach imask.js . Für einen leeren Wert kommt null zurück: ein nackter Aufruf rendert dann leer, nie null oder NaN im Dokument, und imask(…) ?? `-` greift.
Die Konfiguration wird in drei Stufen aufgelöst:
| Stufe | Quelle | Bemerkung |
|---|---|---|
| 1 | Eigene Maske (dritter Parameter) | Gewinnt immer; wird über die Feldmaske gelegt |
| 2 | Felddefinition aus f[`Feld`] | Die Maske aus der Feldkonfiguration |
| 3 | Zahlenformat des Exportierenden | Aus den Ansichtseinstellungen, zwei Nachkommastellen. Trägt das Feld eine Einheit, aber keine Maske, wird die Einheit angehängt |
{#imask($o[`Gewicht`], f[`Gewicht`]) ?? `-`#} {#imask($o[`Breite`], false, { mask: Number, scale: 2, thousandsSeparator: `.`, radix: `,` })#}
Stufe 3 hängt vom exportierenden Benutzer ab. Für reproduzierbare Vorlagen Stufe 1 oder 2 verwenden. Eine fehlerhafte Feldmaske bricht nie den Export, sie fällt auf Stufe 3 zurück.
combine(wert, optionen?)
Umhüllt eine Zeichenkette oder verbindet ein Array. Bei leerer Eingabe kommt def.
| Option | Vorgabe | Bedeutung |
|---|---|---|
pre | '' | Text davor |
post | '' | Text danach |
def | '' | Ergebnis bei leerer Eingabe |
sep | ', ' | Trenner zwischen Arrayelementen |
filterEmpty | false | Leere Elemente weglassen |
{#combine($o[`Inventarbemerkung`], { pre: `(`, post: `)`, def: `k. A.` })#} {#combine([$o[`Künstler`], $o[`Datierung`]], { sep: `, `, filterEmpty: true })#} {#combine([parseFloat($o[`Höhe`]), parseFloat($o[`Breite`])].filter(Boolean).join(` x `), { post: ` cm` })#}
Der Nutzen: Klammern und Einheiten verschwinden, wenn kein Wert da ist, statt eines einsamen ( ) oder cm im Dokument.
combine verarbeitet nur Zeichenketten. Eine Zahl ergibt def, auch innerhalb eines Arrays. Darum im
dritten Beispiel erst join, dann combine. Wer eine einzelne Zahl umhüllen will, schreibt combine(String(wert), …). Die Option heißt def, nicht default: eine unbekannte Option wird
still ignoriert.
img(datei, konfiguration)
Steht in IMAGE-Befehlen und erzeugt ein Bild für Word. datei ist ein Dateiobjekt aus $f oder files, ein Bildfeldwert ($o[`Titelbild`]) oder eine Dateikennung als Zeichenkette.
| Option | Bedeutung |
|---|---|
width, height | Begrenzungsbox in cm; das Bild wird mit gleichem Seitenverhältnis eingepasst. Ein einzelner Wert wirkt als quadratische Box; ohne Angabe gilt 6 × 6 cm |
alt | Alternativtext |
caption | Bildunterschrift |
rotation | Drehung in Grad, nur wenn render.rotation nicht abgeschaltet ist |
render.crop | Den in Moliri gesetzten Bildausschnitt anwenden. Vorgabe true |
render.overlay | Markierungen einzeichnen. Vorgabe true |
render.rotation | Drehung berücksichtigen. Vorgabe true |
Die Vorgabe ist also das bearbeitete Bild, nicht das Original:
{# IMAGE img($file, { width: 6 }) #} {# IMAGE img($file, { width: 6, render: { crop: false, overlay: false } }) #} {#IMAGE img(($o[`Titelbild`] ?? null), { width: 8, height: 6 })#}
Das ?? null bei einem Bildfeld sorgt dafür, dass Objekte ohne Bild einen Platzhalter bekommen statt eines
Fehlers. Schlägt das Laden fehl, erscheint ebenfalls ein Platzhalterbild. Gleiche Bildanforderungen lädt
Moliri je Exportlauf nur einmal.
Die DPI werden beim Export eingestellt, Voreinstellung 220. Word komprimiert eingebettete Bilder beim Speichern selbst wieder auf etwa 220 DPI, solange die automatische Bildkomprimierung nicht abgeschaltet ist. Für Druckvorlagen lohnt es, das in Word nach dem ersten Öffnen zu tun.
Dateien vor img() filtern
$f enthält alle Dateien des Objekts, auch PDF und Dokumente. Nicht direkt darstellbare Dateien
bekommen Platzhalter oder erzeugte Vorschauen, ein Filter ist also nicht zwingend. Wer nur Bilder will,
filtert:
{# FOR file IN $f #} {# IF [`image`, `image_other`, `svg`].includes($file.dateiArt) #} {# IMAGE img($file, { width: 6 }) #} {# END-IF #} {# END-FOR file #}
Die gültigen Werte für dateiArt stehen unter Unterstützte Formate .
fdate(wert, format?)
Formatiert ISO-Datumswerte, auch mit Uhrzeit. Das Format steht im Befehl, das Ergebnis ist deshalb für alle Benutzer gleich.
| Format | Ergebnis für 2026-03-05 |
|---|---|
TT.MM.JJJJ (Vorgabe) | 05.03.2026 |
JJJJ | 2026 |
MM.JJJJ | 03.2026 |
T. Monat JJJJ | 5. März 2026 |
JJJJ-MM-TT | 2026-03-05 |
TT/MM/JJJJ | 05/03/2026 |
MM/TT/JJJJ | 03/05/2026 |
auto | Datumsformat aus den Ansichtseinstellungen des Exportierenden |
Verhalten an den Rändern:
- Leere Werte und
0000-00-00ergebennull. Das rendert leer, und??greift. - Unvollständige Daten werden verkürzt:
2025-00-00wird2025,2025-03-00wird03.2025bzw. März 2025. - Werte, die nicht mit einem ISO-Datum beginnen (Freitext wie um 1900), kommen unverändert zurück.
- Ein unbekanntes Format gilt als
TT.MM.JJJJ.
{#fdate($o[`Eingangsdatum`])#} bis {#fdate($o[`Rückgabedatum`])#} {#fdate($o[`Datierung`], `JJJJ`) ?? `o. J.`#} {#fdate(p.projektbeginn, `T. Monat JJJJ`)#}
fcheck(wert, ja?, nein?)
Gibt ein Schalterfeld als Text aus. Als „nein“ gilt ein leerer Wert und alles, was wie eine Verneinung
aussieht: 0, nein, no, false, aus, off, ❌ und ähnliche. Alles andere gilt als „ja“. Damit
liest fcheck auch Schalter mit eigenen Speicherwerten richtig.
Ohne weitere Argumente kommen die Beschriftungen aus den Ansichtseinstellungen des Exportierenden:
{#fcheck($o[`Kurierbegleitung`])#} → Ansichtseinstellungen {#fcheck($o[`Kurierbegleitung`], `Ja`, `Nein`)#} → feste Beschriftung
In den Ansichtseinstellungen sind ✅ und ❌ vorbelegt. In Word hängt deren Darstellung an der Schriftart
des Absatzes. Für Druckvorlagen sind Ja/Nein oder X/- die sichere Wahl, also die zweite Form oben.
Nur wenn keine Ansichtseinstellung vorliegt, setzt Moliri selbst Ja und Nein ein.
ffmt(datensatz, schlüssel)
Gibt den Wert eines Feldes so aus, wie sein Ausgabe-Formatter ihn formatiert. Der erste Parameter ist der
Datensatz, $o oder die Laufvariable einer Schleife:
{#ffmt($o, `Maße`) ?? ``#} {#ffmt($o, `Maße.Objekt`)#} {#ffmt($o, `Leihgeber`) ?? `-`#} {# FOR obj IN objects #}{#ffmt($obj, `Maße`)#}{# END-FOR obj #}
Ohne formatierten Wert kommt null zurück, ?? greift. Schlüssel mit Eintrag (.) und Variante (#)
sowie die mitgelieferten Formatierungen je Feldart stehen unter Ausgabe-Formatter in Vorlagen .
ui: Ansichtseinstellungen
Kein Aufruf, ein Objekt. Schlüssel und Warnung stehen unter Vorlagen-Variablen .
{#$o[`Datierung`] ?? ui.nullreplacement#} {#fdate($o[`Eingangsdatum`], `auto`)#}
deco(anmerkungen, konfiguration)
Überträgt Feld-Anmerkungen in den Bericht: die Farbmarkierung eines Feldes als Hintergrund des Bausteins, Kommentar und Quelle als Word-Kommentar.
Eingerichtet wird das im Vorlagen-Editor, nicht von Hand. Im Autor-Panel hat jeder angeklickte Baustein den Abschnitt Feld-Metadaten mit den Zeilen Farbe, Kommentar und Quelle. Dort wählt man, welches Feld die Farbe liefert und welche Felder Kommentare und Quellen beisteuern. Moliri speichert die Wahl am Steuerelement des Bausteins und setzt beim Export den passenden Aufruf selbst ein, in Schleifen mit den Anmerkungen des jeweiligen Objekts.
Der erzeugte Aufruf sieht so aus:
{# deco($m, { color: `RegNr`, comments: [`RegNr`], sources: [] }) #}
| Schlüssel | Bedeutung |
|---|---|
color | Feldname, dessen Farbmarkierung als Hintergrund erscheint |
comments | Feldnamen, deren Kommentare als Word-Kommentar erscheinen |
sources | Feldnamen, deren Quellenangaben als Word-Kommentar erscheinen |
Ohne Anmerkung ergibt der Aufruf eine leere Zeichenkette, es entsteht keine leere Markierung.
Die Nachverarbeitung, die Farbe und Kommentare setzt, läuft nur über Bausteine, die im Vorlagen-Editor so
eingerichtet wurden. Ein deco-Aufruf, der als Klartext in der Vorlage steht, hinterlässt eine
unverständliche Zeichenfolge im Bericht.
JavaScript im Befehl
Neben den Hilfen sind einfache Ausdrücke direkt möglich:
{# INS [$o[`Feld A`], $o[`Feld B`]].filter(Boolean).join(`, `) #}
Für aufwendigere Logik ist ein vorbereitender EXEC-Schritt am Dokumentanfang übersichtlicher als
verschachtelte Einzeiler. Siehe Rezepte .
Weiterlesen
- Vorlagen-Syntax : die Befehle
- Vorlagen-Variablen : der Datenkontext
- Ausgabe-Formatter in Vorlagen :
ffmtund$fmtim Detail - Rezepte : kopierbare Muster