Reporting mit Panels (Silent print)

Mittels der Kommandozeilenoption -silentMode läuft das User Interface im Hintergrund ohne graphische Darstellung. Es erlaubt, beliebige Panels zu drucken. Drucken in Silent Mode bedeutet, dass ein Panel ausgedruckt wird, wenn ein User Interface im Silent Mode läuft. Mit der folgenden Kommandozeile-Option wird ein User Interface im Silent Mode gestartet. (siehe auch CTRL-Funktion printRootPanel()).

WCCOAui -silentMode
VORSICHT: Es erfolgt kein Puffern und sequentielles Abarbeiten der Druckaufträge. Kommt ein neuer Auftrag während der Bearbeitung des aktuellen Auftrages herein, so wird dieser neue Auftrag ignoriert.

Den Status des aktuellen bzw. letzten Druckauftrags kann man am Element _SilentPrint des internen Datenpunkts_Ui erkennen:

Status Bedeutung
1 Erfolgreich bearbeitet, warte auf neue Aufträge
2 Abbruch durch Benutzer
3 Warten (z.B. bis alle CTRL-Skripts abgearbeitet wurden)
4 Fehler (z.B. konnte das Panel nicht gelesen werden)
Anmerkung: Das Ausdrucken erfolgt erst, nachdem alle CTRL-Skripts des zu druckenden Panels vollständig abgeschlossen wurden (also z.B. alle Antworten angezeigt werden).

Die zugehörigen Datenpunktelemente des _UI Datenpunktes sind:

Datenpunktelement am DP-Knoten _Ui_X.Print ("X" steht für die Nummer des UI) Datentyp Beschereibung
.PrinterName string

Druckername oder Dateiname.

Im Silent Mode bzw. ohne Druckerdialog kann auch der Ausdruck in einer lokalen Datei gespeichert werden. Die zulässigen Formate sind PDF (*.pdf) und Postscript (*.ps).

Syntax:

"file:///path/file.pdf"

Beispiele:

Linux: "file:///tmp/file.pdf"

Windows: "file:///C:/Temp/file.ps"

.Landscape bool Landscape/Portrait
.Background bool off = die Hintergrundfarbe des Panels wird weiß gedruckt
.Scale float Skalierungsfaktor
.FitToPage bool Erlaubt Skalierung unabhängig vom Drucker

Mit diesen Attributen können Sie einstellen, wie ein Panel ausgedruckt werden soll (außerdem steht auch der Config-Eintrag silentPrintWithBorder zur Verfügung). Siehe das folgende Beispiel.

Ein Druckauftrag bzw. der Abbruch eines solchen Auftrags erfolgt durch Setzen der Attribute des internen User Interface-Datenpunkts (des Ui_ Datenpunkts für den im Hintergrund laufenden Manager).

Das folgende Beispiel zeigt Ihnen, wie Sie ein Panel im Silent Mode ausdrucken und wie Sie die Druckereinstellungen setzen. Es wird das Panel silentMode.pnl im Format "Landscape" und auf der Seite angepasst ausgedruckt. Beachten Sie, dass Sie keine automatische Meldung bezüglich des Druckauftrags im Log Viewer sehen (außer die DebugN()-Meldung, die in dieser Funktion definiert wurde). Das Panel wird auf dem Default-Drucker ausgedruckt. Beachten Sie, dass für dieses Beispiel ein User Interface mit der Nummer 4 im Silent Mode laufen muss. Starten Sie also ein UI mit der Nummer 4 und mit der Option -silentMode.

main()
{
  dyn_string dynStringVar = makeDynString();
  int res;
  res = dpSet("_Ui_4.RootPanelOrigOn.ModuleName", "module1",
  "_Ui_4.RootPanelOrigOn.FileName", "silentMode.pnl",
  "_Ui_4.RootPanelOrigOn.PanelName", "silentMode",
  "_Ui_4.RootPanelOrigOn.Parameter", dynStringVar,
  "_Ui_4.Print.Landscape", TRUE,
  "_Ui_4.Print.Background", FALSE,
  "_Ui_4.Print.Scale", 0,
  "_Ui_4.Print.FitToPage", TRUE);
  DebugN("Funktion erfolgreich", res);
}

Im folgenden Beispiel wird der obige Druckauftrag abgebrochen. Das Panel mit dem Namen "silentMode" wird also doch nicht ausgedruckt.

main()
{
  int Abbrc;
  Abbrc = dpSet("_Ui_4.PanelOff.ModuleName", "module1",
  "_Ui_4.PanelOff.PanelName", "silentMode");
  DebugN("Abbruch des Druckauftrags", Abbrc);
}

Das Drucken mehrerer Module kann mit der Funktion printRootPanel() ausgeführt werden.

Anmerkung: Im Silent Print werden keine Trendkurven gedruckt, wenn die Legende sichtbar ist. Blenden Sie deshalb die Legende immer aus.