Output Management

Output Management

Zweck und Einsatz

Über diese Dokumentfunktion kann die generierte Datei an einen konfigurierbaren Endpunkt bzw. Endpunkte übermittelt werden.
Serienbriefe bzw. Serien-Erstellung von mehreren Dokumenten basierend z.B. auf eine Liste von Empfängern ist ebenfalls über diese Funktion konfigurierbar.

Die Definition der einzelnen Aktionen basiert auf den primedocs Connect Commands.

Grundaufbau

<OutputConfiguration DisableDefaultSeriesOutput ="true"> <DesktopOutput Name="Test Output 1"> <Fields> <Text Name="Guid"> <Code> function main() { return $.util.generateGuid(); } </Code> </Text> <Text Name="GeneratedFileName"> <Code> function main() { var RecipientName = $("RecipientName"); return "X:\\documents\\Document_" + $("Guid") + "_" + RecipientName + ".docx"; } </Code> </Text> </Fields> <Commands> <SaveFile field-FileName="GeneratedFileName" Overwrite="false" CreateFolder="false"> <Document /> </SaveFile> </Commands> </DesktopOutput> <DesktopOutput Name="Test Output 2"> <Commands> <SaveFile field-FileName="Forms.FullPath" Overwrite="false" CreateFolder="false"> <Document /> </SaveFile> </Commands> </DesktopOutput> <DesktopSeriesOutput Name="Series Output"> <ForEach> <SeriesTextReplacer Name="Default"> <Current Text="$current" /> <Total Text="$total" /> </SeriesTextReplacer> <Commands> <SaveFile FileName="C:\temp\sample_$current_of_$total.docx" Overwrite="true" replacer-FileName="Default"> <Document /> </SaveFile> </Commands> </ForEach> <ForSeries> <MergeAsPdf> <Commands> <SaveFile FileName="C:\temp\sample.pdf" Overwrite="true"> <Document /> </SaveFile> <OpenFile FileName="C:\temp\sample.pdf" /> </Commands> </MergeAsPdf> </ForSeries> </DesktopSeriesOutput> </OutputConfiguration>

Wird in innerhalb der Forms-Konfiguration in einer ObjectCollection das Attribut SelectecObjectId konfiguriert, wird implizit eine DesktopSeriesOuput-Konfiguration generiert und ein entsprechender Button im Forms-Dialog angezeigt.

Das optionale Attribut DisableDefaultSeriesOutput kann genutzt werden, um dieses Verhalten zu unterdrücken.


DesktopOutput

Über die DesktopOutput-Elemente kann das resultierende Dokument gezielt an einen bestimmten Endpunkt übermittelt werden.

Benötigte Attribute:

  • Name: Der Name wird in der Forms-Oberfläche beim Generieren als zusätzlicher Button angezeigt.

Elemente:

  • Fields: Um dynamische Daten für einen “Output” zu definieren, können ähnlich wie mit der normalen Fields-Funktion, Felder definiert werden.

  • Commands: Die Commands bestimmen, welche Aktionen ausgeführt werden. Es stehen alle Commands aus der primedocs Connect-Welt zur Verfügung.

Felder in Outputs

Fields im Output werden berechnet, sobald der entsprechende Output aktiviert wird.

Die Output-Fields erlauben eine Untermenge der normalen Feldfunktion in Kombination mit bestimmten API Aufrufen.

<Fields> <Text Name="Guid"> <Code> function main() { return $.util.generateGuid(); } </Code> </Text> <Text Name="StaticValue" Value="Test" /> <Text Name="StaticTranslatedValue" translate-Value="Fields.Key.StaticValue" /> <Text Name="GeneratedFileName"> <Code> function main() { var RecipientName = $("RecipientName"); return "X:\\documents\\Document_" + $("Guid") + "_" + RecipientName + ".docx"; } </Code> </Text> </Fields>

Erlaubte Kindelemente:

Text: Erlaubt es ein Text-Element zu erzeugen. Als Identifier muss ein Name gesetzt werden.
Der Wert kann über diese Wege gesetzt werden:

  • Statisch über Value

  • Statisch, aber mit Übersetzung über translate-Value

  • Dynamisch über Code

Das Code-Element nutzt dieselbe Logik wie bei den Fields, allerdings mit einer vereinfachten JavaScript API:

Es können nur Text-Typen in dieser API geholt und zurückgegeben werden. Zugriffe auf Felder mit anderen Typen sind nicht gestattet.

Funktion

Rückgabetyp

Funktion

Rückgabetyp

$.(…)

Gibt ein Textfeld zurück

$.get(…)

Gibt ein Textfeld zurück

$.getText(…)

Gibt ein Textfeld zurück

$.util.generateGuid()

Generiert eine eindeutige GUID.

Die generierten Felder können dann über den field-FileName (etc.) Syntax für die Commands benutzt werden.


DesktopSeriesOutput

Über die DesktopSeriesOutput-Elemente kann eine Seriengenerierung gestartet werden.

Diese Option ist nur in Kombination mit einer konfigurierte ObjectCollection samt SelectedObjectId ausführbar, da über eine definierte Liste iteriert werden muss.

Benötigte Attribute:

  • Name: Der Name wird in der Forms-Oberfläche beim Generieren als zusätzlicher Button angezeigt.

Elemente:

  • ForEach: Über dieses Element lassen sich pro Seriendokument Aktionen definieren.

    • Beispiel: Für jeden Empfänger soll ein Dokument gespeichert werden.

  • ForSeries: Über dieses Element lässt sich ein zusammengefügtes PDF über die gesamte Serie erstellen.

    • Beispiel: Es wird ein zusammengefügtes PDF für alle Empfänger benötigt.

ForEach

Über dieses Element lassen sich Aktionen definieren, welche pro Dokument ausgeführt werden sollen.

Elemente:

  • SeriesTextReplacer: Über dieses Element lassen sich Platzhalter für das aktuelle Element und die Gesamtanzahl der zu generierenden Dokumente abbilden. Damit ist es möglich Dokument_26_von_87.docx zu erstellen. Nur dieses Element hat Zugriff auf den aktuellen “Iterator” und die “Gesamtanzahl”.

    • <Current Text="$current" /> heisst, dass die aktuelle Anzahl durch den Platzhalter $current ausgedrückt wird.

    • <Total Text="$total" /> heisst, dass die totale Anzahl durch den Platzhalter $total ausgedrückt wird.

    • Es können mehrere SeriesTextReplacer definiert werden - diese müssen einen eindeutigen Name tragen.

  • Commands: Ähnlich wie beim DesktopOutput werden darüber die Commands (Siehe: https://primesoft-group.atlassian.net/wiki/spaces/PDT/pages/310804540) definiert.

    • Zusätzlich gibt es hier Zugriff auf den replacer-FileName="Default"

Ähnlich wie beim dynamischen Zugriff über field-FileName, kann man diese Attribute im ForEach Element nochmals durch den replacer-[ATTRIBUTE] durchlaufen lassen.

ForSeries

Über dieses Element ist es möglich, alle Dokumente als ein einzelnes PDF über das Element MergeAsPdf abzubilden.

Innerhalb von MergeAsPdf können wieder Commands definiert werden und das Resultat wird als “PDF”-Dokument weiterverarbeitet.

PrimeSoft AG, Bahnhofstrasse 4, 8360 Eschlikon, Switzerland