Multi-Daten-Edit-Elemente

Multi-Daten-Edit-Elemente werden für die Darstellung von 1:N-Beziehungen im UI benötigt. Sie können folgenden Metadatenobjekten zugeordnet werden:

  • Daten-Edit-Element

Eigenschaften des Multi-Daten-Edit-Elements

BereichEigenschaftWert
Allgemeines

Name

(Name)

Name des Elements (für Anwender nicht sichtbar)



Anhängen an Multi-Daten-Edit-Element der Partner-Kennung

(AppendToPartnerId, AppendToPackageId)

Partner- und Lösungs-Kennung (bei Sage „Sage“) des gleichnamigen Multi-Daten-Edit-Elementes, an das diese Definition angehängt werden soll.

Einsatzzwecke:

  • Makro-Funktionen an Ereignisse des Multi-Daten-Edit-Elementes bzw. dessen Felder anhängen
  • Felder an den Multi-Daten-Edit-Element anhängen

Hinweis: Anhängen ist immer einstufig, Verkettungen sind nicht möglich



Ersetzen

(Replace)

Festlegung, ob das Original beim Anhängen an ein Multi-Daten-Edit-Element ersetzt werden soll (bei Ja).

Die Verwendung des Ersetzens ist nur für Ausnahmefälle gedacht. Dabei wird das Original vollständig ersetzt. Die Verantwortung dafür trägt der Entwickler der Erweiterung. Beim Ersetzen muss das andere Element den gleichen Datensatz bzw. die gleiche Datenstruktur verwenden wie das Original-Element. Ansonsten würden auf oberster Datenebene die Bezüge in „DetailDataRecordReferences“ bzw. „DetailDataStructureReferences“ nicht mehr stimmen, was zu Fehlfunktionen führen würde.

In der Folge werden an das Original angehängte Multi-Daten-Edit-Elemente nicht mehr beachtet. Soll angehangen werden, muss an das ersetzende Multi-Daten-Edit-Element angehangen werden.

Berechtigungen des Originals werden ebenfalls nicht mehr beachtet. Es sind eigene Berechtigungen zu definieren.

Wird ein Multi-Daten-Edit-Element mehrfach ersetzt, „gewinnt“ das ersetzende Multi-Daten-Edit-Element, das die kleinste Partner-ID bzw. bei gleicher Partner-ID die kleinste Lösungs-Kennung hat. Bei Bedarf kann die Reihenfolge im AppDesigner angepasst werden.



Titel

(Title)

Titel des Elements (für Anwender sichtbar)



Beschreibung

(Description)

Kurze Dokumentation des Multi-Daten-Edit-Elementes



Kommentar

(Comment)

Beliebiger Kommentar zur Dokumentation.

Der Kommentar wird nicht zum Client übertragen und dient nur zur Dokumentation von Besonderheiten, Hinweisen, etc. Bei Auslieferung/Weitergabe der Lösung wird der Kommentar eingeschlossen, so dass der Empfänger ihn im AppDesigner sieht.


Daten

Datensatz

(DataRecordPartnerId, DataRecordPackageId, DataRecordName)

Partner-Kennung, Lösungs-Kennung und Name für den verwendeten Datensatz.



Datenstruktur

(DataStructurePartnerId, DataStructurePackageId, DataStructureName)

Partner-Kennung, Lösungs-Kennung und Name für die verwendete Datenstruktur.



Sortierbar

(CanSort)

Legt fest, ob die Daten im Multi-Daten-Edit-Element sortierbar sind
Darstellung

Feldverweis für Vorlage

(TemplateSelectorField)

Verweis auf ein Datensatz- oder Datenstruktur-Feld, das zur Template-Selektion durch die Daten dient.

Wenn nur Template „Standard“ vorhanden ist, darf das Attribut leer bleiben.



Höhe (Pixel)

(Height)

Standard-Höhe des Elementes in Pixel (Wertebereich 80 bis 760)



Minimum-Höhe (Pixel)

(MinimumHeight)

Minimale Höhe in Pixel (Wertebereich 80 bis 300).


Kontextmenü

Kontextmenü

(FunctionSetPartnerId, FunctionSetPackageId, FunctionSetName)

Partner-Kennung, Lösungskennung und Name für das Kontextmenü



Zwischenablage Modus

(ClipboardFunctionality)

Modus für die Unterstützung der Zwischenablage (Kontextmenü Kopieren, Ausschneiden, Einfügen und Löschen). 

  • 0 = Kopieren von Daten in die Zwischenablage unterstützen (die Daten können dann z.B. in Word oder Excel verwendet werden)
  • 1 = komplette Zwischenablage unterstützen und Änderungen komplett auf Client-Seite realisieren (d.h. reine Datenänderung ohne Logik)
  • 2 = komplette Zwischenablage unterstützen und Änderungs-Logik auf Server-Seite realisieren (nur verwendbar, wenn ein Datenservice zur Verfügung steht. Es wird automatisch die Methode "PastePositions" im Datenservice aufgerufen)

    Hinweis zum "Ausschneiden" und "Löschen":

    • Beide Funktionen führen "Datensatz löschen" genauso aus, wie es auch per Funktionsaufruf (FunctionCall) mit Typ 8 ("Datensatz löschen") ausgeführt werden kann.

Drag&Drop

(ab Version 9.0)

Titel Drop-Bereich

(DropzoneTitle)

Der Titel des Drop-Bereichs des Elementes. Darunter ist ein Bereich zu verstehen, in den per Drag&Drop-Aktion etwas abgelegt werden kann.

Der Drop-Bereich des Elementes wird angezeigt, wenn der Titel definiert ist.

Wenn als Drop-Formatname "FileDrop", "FileDrop-Multi", "EMail" oder "EMail-Multi" eingetragen ist, wird an den Titel des Drop-Bereichs automatisch der Link "oder auswählen" angehängt. Wird der Link ausgewählt, wird automatisch ein Datei-Öffnen-Dialog angezeigt.

Der Titel kann bei angehängten Multi-Daten-Edit-Elementen (siehe "AppendToPartnerId" und "AppendToPackageId") definiert werden. Der Titel wird nach aufsteigenden Partner- und Lösungs-Ids an den Titel angehängt (außer Dubletten).



Drop-Formatnamen

(DropFormats)

Definiert eine Semikolon-separierte Liste von reservierten Namen, die angeben welche Datenformate auf dem Drop-Bereich abgelegt werden können.

Unterstützte Formate:

  • "FileDrop" für Dateien (wird z.B. vom Windows Explorer beim Ziehen erzeugt)
  • "EMail" für E-Mail-Objekte von Outlook und Thunderbird mit den Dateierweiterungen "MSG" und "EML".
    Das E-Mail-Objekt kann entweder direkt aus dem jeweiligen Programm gezogen oder als Datei übergeben werden.
    Wird ein E-Mail-Objekt übergeben, wird als Ergebnis der Datei-Pfadnamen der dort verlinkte Datei geliefert.
    Zur Analyse der E-Mail-Dateien ("From", "To", "Subject", "Date" und "Content") stehen Hilfsfunktionen in der Klasse "Sagede.OfficeLine.Shared.EMailInfo" zur Verfügung, die AppServer-seitig eingesetzt werden können.
  • "EMail-Multi" und "FileDrop-Multi" funktionieren jeweils wie die Varianten ohne "-Multi", erlauben aber jeweils ein Drop mehrerer Dateien des jeweiligen Typs.
    Eine Einschränkung der zulässigen Dateinamen-Erweiterungen (inkl. "MSG" und "EML" bei Mails) kann optional (durch einen Doppelpunkt abgetrennt) bei den jeweiligen Formaten angegeben werden. Mehrere Dateinamen-Erweiterungen werden durch Kommata getrennt. Z.B. schränkt "EMail:msg; FileDrop-Multi:pdf" auf eine Msg-Datei von Outlook und mehrere PDF-Dateien ein.

Hinweis: Alle Formatnamen aus "System.Windows.DataFormats" sind reserviert für System-seitige Erweiterungen.

Wenn "DropzoneTitle" definiert ist, muss mindestens ein Format angegeben werden.

Bei angehängten Multi-Daten-Edit-Elementen (siehe "AppendToPartnerId" und "AppendToPackageId") können weitere Formate definiert werden, die aber nur behandelt werden, wenn nicht bereits entsprechende Formate definiert sind.



Drop-Ausgangs-Verzeichnis

(DropInitialDirectory)


Bei angehängten Multi-Daten-Edit-Elementen (siehe "AppendToPartnerId" und "AppendToPackageId") können weitere Verzeichnisse definiert werden, die aber nur behandelt werden, wenn nicht bereits für das entsprechende Format ein Verzeichnis definiert wurde.
Ereignisse (Makros)

Beim Anzeigen

(OnCurrent)

Makros, die nach dem Anzeigen eines neuen oder vorhandenen Datensatzes aufgerufen werden.

Hinweis: Im Unterschied zum OnCurrent-Makro des Data-Edit-Elementes tritt das MDEE-Ereignis nicht für neue Datensätze auf. Ein neuer Datensatz entsteht bei der ersten Eingabe in einer neuen Zeile automatisch (der Datensatz ist dann mit den Defaultwerten gefüllt, wobei der eingegebene Wert aber noch nicht verfügbar ist; der neue Wert kann bei Bedarf im "Nach Aktualisierung"-Ereignis behandelt werden).

Hinweis: Wenn ein Daten-Service den Satz anschließend mit Werten füllt, tritt dort kein eigenes "Beim Anzeigen"-Ereignis für den vorhandenen Datensatz auf. Es muss in solchen Fällen immer das "Nach Aktualisierung"-Ereignis verwendet werden.

Wenn ein Daten-Service verwendet wird, können vorhandene Sätze auch nachträglich entstehen, z.B. wenn in der Belegerfassung zu einem neu eingegebenen Artikel zusätzliche Zubehör-Positionen (und somit neue Datensätze) geliefert werden.

Die Ausführung erfolgt nachdem alle Daten des übergeordneten Daten-Edit-Elements und der in diesem enthaltenen Multi-Data-Edit-Elemente aktualisiert worden sind.



Nach Einfügen

(AfterPaste)

Makros, die nach dem Einfügen von Datensätzen aus der Zwischenablage aufgerufen werden.

Hinweis: Das Ereignis wird nur dann aufgerufen, wenn die Funktion zur Server-seitigen Prüfung der Datensätze mit dem Ergebnis True beendet wurde.

Das Ereignis wird auf Client-Seite ausgelöst;

Tritt nach dem "Beim Anzeigen"-Ereignis des Datensatzes auf.



Bei Drop

OnDrop
(ab Version 9.0)

Das Makro wird aufgerufen, wenn der Inhalt einer Drag&Drop-Aktion auf die Dropzone fallen gelassen wird oder der Link "oder auswählen" angeklickt wurde (in diesem Fall wird vorher noch der Datei-Öffnen-Dialog aufgerufen, um die Dateien zu ermitteln).

Das Ergebnis kann mit den Funktionen "GetDropFormat()" und "GetDropValue()" abgerufen werden.

Die weitere Verarbeitung obliegt dem Applikations-Entwickler, d.h. ist über das Makro zu realisieren.

Das Makro hat keinen Datenkontext, da die Drop-Aktion unabhängig vom gerade gewählten Datensatz ist.


Lizenzierung

Lizenz-Kürzel

(LicenseTokens)

Applikationskürzel der zu prüfenden Lizenz (nur in Nicht-Sage-Lösungen verwendbar und änderbar)



Lizenz-Kürzel für Sage

(SageLicenseTokens)

Applikationskürzel der zu prüfenden Lizenz (nur in Sage-Lösungen verwendbar und änderbar)


Eigenschaften der Multi-Daten-Edit-Element-Vorlage

BereichEigenschaftWert
Allgemeines

Name der Vorlage

(Name)

Eindeutiger Vorlagen-Name (eine Vorlage mit Namen „Standard“ ist automatisch immer vorhanden)


Beschreibung

(Description)

Kurze Dokumentation des Templates


Feld-Attribute anhängen?

(DoAppendTo)

Sollen Eigenschaften an das gleichnamige Feld des in "Anhängen an..." referenzierten Multi-Daten-Edit-Elementes angehängt werden?

Einsatzzweck:

  • Makro-Funktionen an Ereignisse der Felder anhängen

Typ der Vorlage

(TemplateType)


Typ der Vorlage:

  • 0 = normale Vorlage
  • 1 = Gruppenkopf-Vorlage
  • 2 = Gruppenfuß-Vorlag

Die Vorlagetypen 1 und 2 sind pro Multi-Daten-Edit-Element jeweils nur einmal zulässig und müssen immer paarweise definiert werden.


Wert für Vorlage

(TemplateSelectorValue)

Eindeutiger Wert zur Selektion der Vorlage

Kontextmenü

Freizuschaltende Funktionen

(FunctionSetActivationList)

Liste explizit freizuschaltender Kontextmenü-Funktionen (siehe auch die Eigenschaft "Explizite Freischaltung?" der Kontextmenüeinträge)

Lizenzierung

Lizenz-Kürzel

(LicenseTokens)

Applikationskürzel der zu prüfenden Lizenz (nur in Nicht-Sage-Lösungen verwendbar und änderbar)


Lizenz-Kürzel für Sage

(SageLicenseTokens)

Applikationskürzel der zu prüfenden Lizenz (nur in Sage-Lösungen verwendbar und änderbar)

Eigenschaften der Multi-Daten-Edit-Element-Felder

BereichEigenschaftWert
Allgemeines

Feldname

(Name)

Zusammen mit Vorlage-Namen eindeutiger Feldname (referenziert Datensatz- bzw. Datenstrukturfeld)


Typ

(Type)

Typ:

  • 1 = Eingabefeld gemäß Datensatz bzw. Datenstruktur
  • 3 = fester Wert aus dem übergeordneten Element (readonly)


Soforthilfe

(EmbeddedHelp)

Hilfetext für das Feld, der z.B. als Tooltipp angezeigt wird

Funktionsname

(FunctionName)

Definiert, dass das Feld einen Funktionsaufruf erhält (Schaltfläche) und gibt den Namen der aufzurufenden Funktion (des aktuellen Kontextmenüs) an.

Ist die Funktion inaktiv, wird die Schaltfläche unsichtbar. Dies ist ein Unterschied zur Darstellung im Daten-Edit-Element oder im Selektions-Element. Das Bild würde sonst nur unnötig Platz verschwenden.


Name der Bilddatei für Funktion

(FunctionImageName)

Name des für die durch "Funktionsname" definierte Schaltfläche zu verwendenden Bildes (Verweis auf ein Bild in „Shared\Bitmaps\UI“).

Tooltipp für die Funktion

(FunctionTooltipp)

Tooltipp-Text für die Funktions-Schaltfläche (soll nur in Ausnahmefällen genutzt werden, um die Zahl der Tooltipps an dieser Stelle gering zu halten).

Hauptfeld?

(IsMainField)

Bei Ja wird mit <Tab> im letzten "Hauptfeld" die Zeile des Multi-Daten-Edit-Elementes bzw. das komplette Multi-Daten-Edit-Element verlassen (Sprung zum nächsten Feld des Daten-Edit-Elements), wenn das Eingabefeld leer ist. Die Zeile gilt dadurch als nicht eingegeben.

Die anderen Spalten einer neuen Zeile sind inaktiv, solange noch kein "Hauptfeld" ausgefüllt wurde. Diese Automatik greift nur, wenn hier mindestens ein Feld auf "Ja" gesetzt wird.

(Nur möglich für die Vorlage „Standard“, da nur dieses eine "Neu-Zeile" besitzt.)

Wird typischerweise für die Schlüsselfelder einer Tabelle verwendet.

Beispiel:

  • In den Artikelpositionen der Belegerfassung sind die vorderen Felder "Positionsnr.", "-Typ" und "Artikelnr." solche "Hauptfelder";

Feld-Attribute anhängen?

(DoAppendTo)

Sollen Attribute an das gleichnamige Feld des angehängten Daten-Edit-Elementes angehängt werden?

Einsatzzweck:

  • Makro-Funktionen an Ereignisse der Felder anhängen
  • Eigenschaften von Standard- oder benutzerdefinierten Feldern überschreiben/festlegen

Funktionalität

(Functionality)

Funktionalität des Feldes:

  • 0 = keine
  • 1 = Telefonnummer
  • 2 = E-Mail-Adresse
  • 3 = Hyperlink
  • 4 = Passwort
    • Felder mit der Funktionalität 'Passwort' sind nur bei Verwendung von Datenstrukturen erlaubt.
    • Die Übertragung von Passworten zum Client ist nicht erlaubt. Vom Server darf nur ein leeres Passwort für "Passwort noch nicht definiert" oder ASCII-9 (Tab) für "Passwort definiert" übertragen werden.
  • 5 = IBAN-Kontonummer (Ab Version 9.0.4)
Darstellung

Für alle Vorlagen gültig?

(IsTemplatesCommon)

Das Feld gilt Vorlagen-übergreifend.

Darf nur in der Vorlage "Standard“ gesetzt werden;


Spaltennummer

(Position)

Standard-Spaltennummer

Wenn die Standard-Spaltennummer 0 ist, hat das Feld keine Position und wird so lange nicht sichtbar, bis der Anwender es platziert


Zeilennummer

(LineNumber)

Standard-Zeilennummer

Der Wert 0 bedeutet,

  • dass die Spalte zeilenübergreifend dargestellt wird und
  • diese beim horizontalen Scrollen sichtbar bleibt.

Nur möglich für die Vorlage "Standard“, da nur dieses auf durchgehenden Grid-Spalten beruht.


Breite (Rastereinheiten, je 25 Pixel)

(Width)

Standard-Spaltenbreite (Rastereinheiten)

Bei Nicht-Standard-Vorlagen wird mit dem Wert 0 definiert, dass sich das Feld über den kompletten verbleibenden sichtbaren Bereich erweitern soll.

Eine Rastereinheit entspricht 25 Pixeln. Die Verwendung der Raster-Einheiten stellt sicher, dass auch mehrzeilige Anzeigen sauber ausgerichtet werden.


Sichtbarkeit

(Visibility)

Sichtbarkeit der Spalte:

  • 0 = Eingeblendet
  • 1 = Ausgeblendet
  • 2 = Versteckt

"Versteckt" bedeutet, dass der Benutzer dieses Feld niemals zu Gesicht bekommen kann, auch nicht über Konfigurationsdialoge, Spalten einblenden, etc. Es kann auch nicht zur Laufzeit sichtbar geschaltet werden (siehe Makro-Befehl "FestlegenFeldSichtbar"). Der Feldwert kann aber wie bei jedem anderen Feld verwendet werden, z.B. in Makros oder Funktionen.

Hat der Benutzer zur Laufzeit keine Lese-Berechtigung für dieses Feld, wird automatisch als Wert für "Sichtbarkeit" 2 an den Client gesendet.

"1 = Ausgeblendet" bedeutet, dass das Feld deaktiviert und dessen Inhalt ausgeblendet wird. Ein eventuell vorhandenes Feld im Detailbereich des Multi-Daten-Edit-Elements wird, außer bei einer neuen Zeile, ebenfalls ausgeblendet.

Hinweise:

  • Soll ein Feld im MDEE nicht angezeigt werden, aber im zugehörigen Detail-Daten-Edit-Element, muss im MDEE-Feld "Position" auf "0" und "Visibility" auf "0" (eingeblendet) gesetzt werden.
  • bei Typ" fester Wert aus dem übergeordneten Element (readonly)" und bei „IsTemplatesCommon“ Ja ist nur 0 zulässig
  • bei angehängten Feldern (siehe „DoAppendTo“) wird der Wert des Original-Feldes überschrieben (der Wert 2 (Versteckt) kann dabei nicht überschrieben werden; beim Anhängen aus mehreren Lösungen heraus aber nur für die Lösung mit der niedrigsten Partner-/Lösungs-ID).

Deaktiviert?

(IsDisabled)

Ist das Feld deaktiviert?

Feld-Titel anzeigen?

(IsLabelVisible)

Soll der Feld-Titel angezeigt werden?

Die Einstellung wird in der Vorlage "Standard" und in Vorlagen-übergreifenden Feldern ignoriert (Bezeichnung wird hier in der Titelzeile angezeigt).



Mit TAB anspringen?

(IsTabStop)

Soll das Feld mit TAB angesprungen werden?

Hinweis:

  • Schreibgeschützte Felder werden über TAB nicht angesprungen, außer wenn sie eine Funktionsaufruf-Schaltfläche haben (wie z.B. die Menge einer Artikelposition)

Zeilenanzahl

(NumberOfLines)

Zeilenzahl für mehrzeilige Eingabefelder bei Texten (die Höhe wird technisch so realisiert, dass das Feld ein Vielfaches der Höhe anderer Felder inkl. deren Abstände ist).

Im Gegensatz zu Daten-Edit-Element-Feldern wird die Höhe des Feldes nicht bereits von Anfang an auf die eingestellte Zeilenanzahl angepasst. Vielmehr wächst das Feld bei Bedarf dynamisch bis maximal zu dieser Zeilenzahl (danach Scrollbalken).

Darf nur ungleich 1 sein, wenn das zugrunde liegende Datenfeld Text enthält.

Steht auch bei Kombinationsfeldern zur Verfügung.


Feld Einheit

(UnitField)

Feldname der ein Datensatz- bzw. Datenstruktur-Feld referenziert, welches die Einheit enthält
Ereignisse (Makros)

Nach Aktualisierung

(AfterChange)

Makros, die auf eine Änderung des Datenwertes reagieren.

Hier werden Aktionen wie z.B. das Laden einer Artikelposition nach Eingabe einer Artikelnummer in der Belegerfassung implementiert. Validierungen müssen dagegen auf Daten-Ebene definiert werden, damit sie unabhängig vom verwendeten Client mindestens Server-seitig ausgeführt werden.

Das Ereignis wird bei Änderungen wie folgt aufgerufen:

  • in Eingabefeldern für Texte, Zahlen, etc. beim Fokusverlust
  • bei Kombinationsfeldern und Checkboxen sofort
  • bei programmgesteuerten Änderungen, beispielsweise nach dem Makro-Befehl „FestlegenFeldwert“

Das Ereignis tritt beim Erzeugen neuer bzw. beim Laden vorhandener Datensätze nicht auf. Hier steht "Beim Anzeigen“ und "Nach Setzen" zur Verfügung.


Nach Setzen

(AfterSet)

Makros, die darauf reagieren, wenn ein Wert im Dialog gesetzt wurde (Laden eines Datensatzes, manuelle Änderung durch den Benutzer oder per Makro-Befehl).

Sie werden zum Setzen des UI-Status verwendet. D.h. ein anderes Feld ist abhängig von diesem (in)aktiv, (nicht) schreibgeschützt, (un)sichtbar.

Das Ereignis wird anschließend zu "Nach Aktualisierung" und vor "Beim Anzeigen" ausgeführt.

Die Ausführungsreihenfolge ist beim Setzen mehrerer Feldwerte gleichzeitig (z.B. beim Laden) nicht garantiert. Soll daher auf andere Felder zugegriffen werden, muss "Beim Anzeigen" verwendet werden.


Vor Suche

(BeforeSearch)

Makros, die vor dem Start der Suche aufgerufen werden (um dort den Adhoc-Filter vorzubelegen).


Nach Suche

(AfterSearch)

Makros, die nach Beendigung der Suche und bevor das Suchergebnis an die Anwendung zurück gegeben wird aufgerufen werden.

Wird das Makro abgebrochen, wird auch die Weitergabe an die Anwendung abgebrochen.

Anwendungs-Szenario für die Verwendung des Ereignisses:

  • Wählt der Anwender im OP-Ausgleich der Buchungserfassung über die Suche OPs aus, sollen alle vorher automatisch eingefügten OPs entfernt werden, solange sie noch keinen Zahlbetrag aufweisen

Bei Fokuserhalt

(OnEnter)

Makros, die beim Fokuserhalt durch Tastatur oder Maus aufgerufen werden.

Das Ereignis tritt in folgenden Fällen nicht auf:

  • Fokus wird auf ein anderes Element und dann wieder zurück auf dasselbe Feld des ursprünglichen Elements gesetzt
  • „Neu-Zeile“ (noch kein Datensatz vorhanden)
  • Automatisch gefüllte Felder, z.B. wenn aus dem Such-Dialog Schlüsselwerte übernommen werden
Lizenzierung

Land

(Country)

Land (additiv, -1 = alle Länder):

  • 1 = Deutschland
  • 2 = Schweiz
  • 4 = Österreich
  • 32 = international

-1 oder jede beliebige Summe aus den Einzelwerten.

Geprüft wird gegen das Land des aktuellen Mandanten.


Lizenz-Kürzel

(LicenseTokens)

Applikationskürzel der zu prüfenden Lizenz (nur in Nicht-Sage-Lösungen verwendbar und änderbar)

Lizenz-Kürzel für Sage

(SageLicenseTokens)

Applikationskürzel der zu prüfenden Lizenz (nur in Sage-Lösungen verwendbar und änderbar)