Weitere Ausgabe starten
Dieses Skript zeigt, wie aus einem laufenden Export heraus ein weiteres PRINT+PLUS Ausgabeformat gestartet werden kann.
Anwendungsfälle
- Dokument + E-Mail: Nach der Erstellung eines Word-Dokuments soll automatisch ein Text-Exporter für den personalisierten Mailversand gestartet werden.
- Skript-Exporter 🠪 Dokument: Ein Skript-Exporter legt zuerst Datensätze an und startet anschließend ein Dokument-Ausgabeformat für die neu erstellten Datensätze.
- Mehrsprachige Ausgabe: Für denselben Datensatz sollen nacheinander verschiedene Ausgabeformate (DE, EN) ausgeführt werden.
Konfiguration in PRINT+PLUS
- Exporter-Typ: Beliebig (Word, Excel, Text, Skript)
- Event: Typischerweise
AfterClosingDocument(das erste Dokument ist fertig) oderAfterLastDocument(alle Dokumente sind fertig)
Vollständiges Skript
// Version 6
namespace Ruthardt.PrintPlus.Skripting
{
using System.Collections.Generic;
using Ruthardt.PrintPlus.Export.UI;
using Ruthardt.PrintPlus.Model.Interfaces;
public class WeitereAusgabeStarten : IScriptAction
{
public void Execute(IPrintContext printContext, ICurrentContext currentContext, IChildContext childContext)
{
ExporterApi.Export(
"MEIN FORMAT", // Name des zu startenden Ausgabeformats
printContext.ExportDirectory.FullName, // Ausgabeverzeichnis (hier: das aktuelle beibehalten)
"PDF", // Dateiformat: "PDF" oder "Default"
false, // Filterdialog anzeigen? (false = direkt ausführen)
"CurrentDatarecord", // Filtertyp (siehe Tabelle unten)
null, // Zusatzangaben (nur bei CompleteList oder CurrentSubrecords)
"Adressen", // Tabellenname des Ausgabeformats
new List<object> // Datensatz-IDs, die verarbeitet werden sollen
{
currentContext.Data.CurrentKey
});
}
}
}
Parameter der ExporterApi.Export-Methode
| Parameter | Typ | Beschreibung |
|---|---|---|
configurationName |
string |
Name des PRINT+PLUS Ausgabeformats, das gestartet werden soll |
outputPath |
string |
Ausgabeverzeichnis. null = Pfad aus der Konfiguration verwenden |
exportFormat |
string |
"PDF" oder "Default" (Standardformat des Exporters) |
filterDialogAnzeigen |
bool |
true = Filterdialog wird angezeigt, false = direkt exportieren |
filterTyp |
string |
Filtertyp (siehe unten) |
zusatzangabenFilter |
string |
Bei CompleteList: WHERE-Bedingung. Bei CurrentSubrecords: Name des Beziehungsfelds. Sonst null. |
tableUserLevelName |
string |
Userlevel-Name der Tabelle, zu der das Ausgabeformat gehört |
currentKeys |
List<object> |
Liste der Primärschlüssel der zu verarbeitenden Datensätze |
Verfügbare Filtertypen
| Wert | Bedeutung |
|---|---|
"CurrentDatarecord" |
Nur die übergebenen Datensatz-IDs |
"CurrentQuery" |
Aktuelle Recherche (nur Adressen) |
"CompleteList" |
Alle Datensätze (optional mit WHERE-Filter) |
"CurrentSubrecords" |
Unterdatensätze über ein Beziehungsfeld |
Beispiel: Nach Belegerstellung eine E-Mail-Ausgabe starten
Event: AfterClosingDocument
public void Execute(IPrintContext printContext, ICurrentContext currentContext, IChildContext childContext)
{
// Nur wenn ein E-Mail-Feld vorhanden ist
var email = currentContext.ParentDataByPrefix["Adresse"].GetStringValue("E-Mail");
if (string.IsNullOrWhiteSpace(email))
{
printContext.Logger.Info("Keine E-Mail-Adresse. Mailversand wird übersprungen.");
return;
}
// Text-Exporter "Beleg Mail" starten für die übergeordnete Adresse
var adressId = currentContext.ParentDataByPrefix["Adresse"].CurrentKey;
ExporterApi.Export(
"Beleg Mail",
null, // Ausgabepfad aus Konfiguration verwenden
"Default",
false,
"CurrentDatarecord",
null,
"Adressen",
new List<object> { adressId });
}
Beispiel: Mehrere Datensätze an die nächste Ausgabe übergeben
Event: AfterLastDocument - alle erzeugten Belege als Sammelexport starten
public void Execute(IPrintContext printContext, ICurrentContext currentContext, IChildContext childContext)
{
// Alle IDs aus der CurrentDataList sammeln
var alleIds = printContext.CurrentDataList
.Select(d => d.CurrentKey)
.ToList();
ExporterApi.Export(
"Sammelrechnung",
null,
"PDF",
false,
"CurrentDatarecord",
null,
"Belege",
alleIds);
}
Hinweise
- Verschachtelung: Sie können aus einem gestarteten Ausgabeformat heraus prinzipiell weitere Ausgaben starten. Achten Sie jedoch darauf, keine Endlosschleifen zu erzeugen.
- Wartedialog: Der Wartedialog bleibt während der zweiten Ausgabe aktiv. Der Benutzer sieht durchgehend den Fortschritt.
- Task-kompatibel:
ExporterApi.Exportfunktioniert auch im PRINT+PLUS Task für automatische Ausgaben.
Keine Kommentare vorhanden
Keine Kommentare vorhanden