Direkt zum Hauptinhalt

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) oder AfterLastDocument (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.Export funktioniert auch im PRINT+PLUS Task für automatische Ausgaben.