myContactCenterHandbuch

Berichtsskripte

Programmcode in einem Berichtsdesign verwenden — Skriptsprache, Ereignisse, Validieren, Fehlersuche und ein Beispiel für ein berechnetes Feld.

Ein Berichtsskript gehört zu einem einzelnen Berichtsdesign. Es wird ausgeführt, wenn dessen Daten und Ausgabe berechnet werden — in der Administration, bei einem Supervisor oder bei einem automatischen Bericht. Es ist weder das Agentenskript noch der Skriptcode eines Flows.

Für viele Berechnungen reichen Ausdrücke und Formelfelder. Verwenden Sie ein Skript, wenn eine Berechnung auf ein Ereignis reagieren oder mehrere Schritte ausführen muss. Manche mitgelieferten Vorlagen berechnen Werte bereits auf diese Weise.

Sprache und vorhandenen Code prüfen

  1. Öffnen Sie das Berichtsdesign im Berichtsdesigner. Zum Gestalten brauchen Sie die unter Berichtsdesigns beschriebenen Rechte.
  2. Markieren Sie den Bericht selbst, etwa über den Berichts Explorer.
  3. Prüfen Sie unter Eigenschaften die Skriptsprache. Die Beispiele unten verwenden C# oder Visual Basic; verwenden Sie nur die Fassung, die zur eingestellten Sprache passt.
  4. Wechseln Sie rechts oben zu Skripte oder drücken Sie F6. Prüfen Sie, ob das Design schon Code enthält, bevor Sie etwas ersetzen.

Die Skriptsprache gilt für das ganze Design. Ein Wechsel übersetzt vorhandenen Code nicht automatisch in die andere Sprache. Die mitgelieferte Grundvorlage Agentenbericht enthält Visual-Basic-Code; übernehmen Sie ihn zusammen mit seiner Spracheinstellung.

Ereignisse zuordnen

Eine Funktion im Skript läuft erst, wenn sie dem passenden Ereignis eines Elements zugeordnet ist. Der Name allein stellt diese Verbindung nicht her.

  • Auf der Seite Skripte wählen Sie Steuerelement: und Ereignis:.
  • Alternativ markieren Sie ein Element, öffnen unter Eigenschaften seine Skripte und wählen beim gewünschten Ereignis (Neu). Der Designer erzeugt den passenden Funktionsrumpf.
  • Verwenden Sie diesen Rumpf, statt Parameter und Namen aus einem fremden Ereignis zu übernehmen. Ein Band, ein Textelement und ein Formelfeld haben unterschiedliche Aufgaben.
Ereignis Verwendung
GetValue eines Formelfelds einen Wert für die aktuelle Datenzeile berechnen und über e.Value zurückgeben
BeforePrint eines Elements oder Bands Eigenschaften vorbereiten, bevor das Element in die Berichtsausgabe eingeht

Ein Ereignis kann für viele Datenzeilen oder Ausgabeelemente erneut laufen. Rechnen Sie daher mit dem Wert der aktuellen Zeile. Eine selbst hochgezählte globale Variable ist kein verlässlicher Ersatz für die Zusammenfassungen des Designers.

Beispiel: Gesprächszeit in Minuten

Das Beispiel ergänzt eine Liste von Konversationen um die Gesprächszeit in Minuten. Das Feld TotalConnectDuration enthält Sekunden — siehe Felder der Statistik.

  1. Legen Sie in der Feldliste ein Formelfeld mit dem Namen ConversationMinutes an und ordnen Sie es derselben Abfrage wie TotalConnectDuration zu.
  2. Verwenden Sie für seinen Ausdruck keine zusätzliche Berechnung. Die Berechnung übernimmt das Ereignis.
  3. Erzeugen Sie für dieses Formelfeld unter Skripte › GetValue eine Funktion. Behalten Sie den vom Designer erzeugten Namen; im Beispiel heißt sie CalculateConversationMinutes.
  4. Ergänzen Sie den Funktionsrumpf mit der Fassung Ihrer Skriptsprache.

C#:

using System;
using DevExpress.XtraReports.UI;

private void CalculateConversationMinutes(object sender, GetValueEventArgs e)
{
    const string durationColumn = "TotalConnectDuration";
    const double secondsPerMinute = 60.0;
    const int decimalPlaces = 1;
    object duration = e.GetColumnValue(durationColumn);
    if (duration is null || duration == DBNull.Value)
    {
        e.Value = default(double);
        return;
    }

    e.Value = Math.Round(Convert.ToDouble(duration) / secondsPerMinute, decimalPlaces);
}

Visual Basic:

Private Sub CalculateConversationMinutes(ByVal sender As Object, ByVal e As DevExpress.XtraReports.UI.GetValueEventArgs)
    Dim duration As Object = e.GetColumnValue("TotalConnectDuration")
    If duration Is Nothing OrElse duration Is System.DBNull.Value Then
        e.Value = 0.0
        Return
    End If

    e.Value = System.Math.Round(System.Convert.ToDouble(duration) / 60.0, 1)
End Sub
  1. Ziehen Sie das Formelfeld auf ein Textelement im Band Detail.
  2. Klicken Sie auf Validieren und öffnen Sie die Vorschau mit einem Zeitraum, für den Daten vorhanden sind.
  3. Kontrollieren Sie eine bekannte Zeile: 90 Sekunden ergeben 1,5 Minuten; ein leerer Datenbankwert ergibt 0. Speichern Sie anschließend das Design.

Der Name in der Ereigniszuordnung muss genau zum Funktionsnamen passen. Ändern Sie einen Namen im Code, passen Sie auch die Zuordnung unter Skripte › GetValue an.

Validieren und Fehler finden

Validieren prüft den Skriptcode. Eine erfolgreiche Prüfung bestätigt die Übersetzung; sie beweist noch nicht, dass das Skript mit allen Datenzeilen fehlerfrei läuft. Öffnen Sie deshalb anschließend die Vorschau.

Problem Was Sie prüfen
Übersetzungsfehler Skriptsprache, Schreibweise, Klammern und die gemeldete Zeile; Fehlermeldungen stehen im Berichtsdesign-Analysator.
Funktion fehlt Die Ereigniszuordnung nennt eine Funktion, die im Code nicht oder unter einem anderen Namen steht.
Code läuft nicht Das Element ist dem richtigen Ereignis zugeordnet und kommt in der Ausgabe vor. Eine unzugeordnete Funktion bleibt ohne Wirkung.
Spalte nicht gefunden Der technische Feldname und die Abfrage des Formelfelds stimmen; im Beispiel wird TotalConnectDuration benötigt.
Fehler nur bei einzelnen Zeilen Leere Datenbankwerte, Datentypen und Umwandlungen prüfen; ein leerer Wert kann DBNull.Value sein.
Abweichende Ergebnisse im automatischen Bericht Parameter, Zeitraum, Spracheinstellung sowie Zugriffe auf lokale Dateien oder Programme vergleichen. Der automatische Bericht läuft auf dem Server.

Ein Berichtsskript wird mit dem Design gespeichert. Bei einem automatischen Bericht muss der benötigte Code deshalb im verwendeten Design stehen; Code aus einem Agentenskript wird dort nicht mit ausgeführt.

    ↑ ↓ auswählen · Eingabe öffnen · Esc schließen