PRINT+PLUS
  • Einleitung
  • Einrichtung
    • Installation
  • Aktualisierung
    • Aktualisierungseinführung
  • Lizenzierung
    • Lizenzierungseinführung
  • Funktionsweise von PRINT+PLUS
    • Einführung Funktionsweise
  • Gestalten von Vorlagen
    • Intro Vorlagen
    • Beispiel mit Rechnung
    • Formatierung
    • Spezielle Platzhalter für Datum, Ja/Nein-Felder, Bilder und HTML
    • Platzhalter für die Benutzerattribute von cobra CRM
    • Eigene Platzhalter
  • Einrichtung von Ausgabeformaten
    • Intro
    • Alle Einstellungen eines Ausgabeformats im Detail
    • Register "Allgemeine Konfiguration"
    • Register "Ausgangstabelle (Current)"
    • Register "Ausgangs-Vorlage"
    • Register "Übergeordnete Tabellen (Parent)"
    • Register "Untergeordnete Tabellen (Children)"
    • Register "Dokumente speichern"
    • Register "Filter-Dialog"
    • Register "Ergebnis-Verhalten"
    • Register "Skripte"
  • Ausgabe ausführen
    • Intro Ausgabe ausführen
  • AUSGABEN PER TASK AUSFÜHREN
    • Aufgaben dem Task zuweisen
    • Windows Aufgabenplanung für den Task einrichten
    • Besonderheiten in Skripten
  • Eingabemasken Steuerelement
  • Intro Eingabemasken Steuerelement
    • Steuerelement hinzufügen
  • Einbindung von Print+Plus in cobra Kampagnen
  • Intro Einbindung von Print+Plus in cobra Kampagnen
  • Grundlagen Skripting
    • C#
    • Skript-Events
    • Kontexte
    • Geladene Daten verwenden
    • Geladene Daten verändern
    • Datensätze anlegen
    • Eingabemaske öffnen
    • Eigene Werte ergänzen (Custom Values)
  • Beispielskripte
    • Nummer vergeben
    • PDF-Formulare füllen
    • PDF-Dokumente zusammenfügen
    • Generiertes Dokument via SMTP versenden
    • Weitere Ausgabe starten
    • Vorlage aus DMS-Feld holen
    • Felder für CRYPTO+PLUS verschlüsseln
    • Benutzerabhängige Drucker verwenden
    • Bilder in E-Mails einbinden
    • Zahlen in Worten ausschreiben
    • Datensatz-Bilder aus cobra einbetten
    • Ergebnisdokumente kopieren
    • Regionsspezifische Ausgabeformate
    • Andere Datenquelle-Objekte nutzen
    • DocuSign Integration
  • FAQs
    • Fehlermeldung Template konnte nicht geöffnet werden
    • DevExpress-Word-Exporter
      • Bilder in Vorlage
      • Bekannte Einschränkungen
      • Hinweise für Entwickler
  • Zusätzliches Tool im Zusammenhang mit PRINT+PLUS
    • Intro Zusätzliches Tool
Powered by GitBook
On this page
  1. Grundlagen Skripting

Kontexte

Dieser Abschnitt beschreibt, wie PRINT+PLUS zur Laufzeit die Umgebung und die Daten im Speicher enthält.

Ideen

Es gibt grundsätzlich 3 verschiedene Kontexte (von Child-Kontexten können potenziell viele Instanzen vorhanden sein)

PrintContext

Der PrintContext repräsentiert die Ausführungsumgebung. Er enthält u.a.

  • die cobra-Umgebung (via PrintContext.CobraContext)

    • Hier ist auch ersichtlich, ob PRINT+PLUS in cobra oder als Task ausgeführt wird.

  • den Zugriff auf den Waitform-Manager (via PrintContext.WaitFormManager)

  • die geladene Konfiguration des Ausgabeformats (via PrintContext.Config)

// Zugriff auf aktuellen Benutzer
var user = printContext.CobraContext.UserShortname;
			
// Eine Messagebo anzeigen, die über dem Wartefenster ist
printContext.WaitFormManager.ShowMessageBox("blub");
			
// Zur Laufzeit (z.B. BeforeLoadData) noch die Konfiguration verändern
// Dadurch werden die JSON-Files nicht verändert, gilt nur einmalig
printContext.Config.ResultDialogMode = Ruthardt.PrintPlus.Model.Enumerations.ResultDialogModes.OpenLastDocument;

// Abfragen ob PRINT+PLUS als Task ausgeführt wird
if (printContext.CobraContext.IsStandaloneExecution)
{
    // Anweisungen die nur im Task ausgeführt werden sollen
}

CurrentContext

Der CurrentContext repräsentiert den Ausgangsdatensatz der aktuellen Ausgabe. Bei Mehrfachausgaben wird für jeden Ausgangsdatensatz ein CurrentContext erzeugt und jede Ausgabe einzeln abgearbeitet.

Der CurrentContext enthält direkt alle Daten des Ausgangsdatensatzes und alle (rekursiv) übergeordneten Datensätze.

// Zugriff auf den aktuellen Datensatz, in diesem Beispiel die Adresse
var adresse = currentContext.Data;
var firma = adresse.GetStringValue("Firma")
			
// Zugriff auf geladene Parent-Datensätze
var partner = currentContext.ParentDataByPrefix["Partner"];
			
// Iterieren von Unterdatensätzen
var kontakte = currentContext.ChildContextByPrefix["Kontakte"];
foreach (var kontaktContext in kontakte)
{
	// Zugriff auf Daten des Unterdatensatz
	var kontakt = kontaktContext.Data;
				
	// Zugriff auf Parent des Unterdatensatzes
	var betriffProjekt = kontaktContext.ParentDataByPrefix["BetrifftProjekt"];
}

ChildContext

Wird nur benötigt in Skripten die auf der Child-Ebene aufgerufen werden.

Entspricht dann dem vorigen Beispiel ChildContextByPrefix

PreviousSkript-EventsNextGeladene Daten verwenden

Last updated 2 months ago