Seitenhistorie
Inhalt | ||
---|---|---|
|
Definition
Manchmal benötigt man in Auswahlfeldern (Combobox/List of Values) nur eine bestimmte Menge aller Daten, die zur Auswahl angeboten werden sollen. Diese sollen sich dann abhängig eines anderen ausgewählten Wertes zusammensetzen.
Konfiguration
Anwendungsbeispiele:
- Auswahl von Ansprechpartnern. In einer Combobox sollen die entsprechend Ansprechpartner eines Kunden zur Auswahl stehen.
- Auswahl eines Gebäudes. In einer Combobox sollen alle dazugehörigen Räume zur Auswahl stehen.
- etc.
Dieses Verhalten kann in Nuclos mit Hilfe von Datenquellen realisisert werden.
Fallbeispiel: Ansprechpartner je Kunde
In den Stammdaten einer Anwendung gibt es Ansprechpartner, die bestimmten Kunden zugeordnet sind.
In der Bestellung Im Auftrag wird nun ein Lieferant Kunde ausgewählt. Im Unterformular der Bestellung sollen dann die bestellten Artikelpositionen eingetragen werden könnenDanach soll der Ansprechpartner des Kunden ausgewählt werden. Dabei sollen in der Combobox für die Auswahl des Artikels Ansprechpartners nur Artikel Ansprechpartner auswählbar sein, die auch zu diesem Lieferanten Kunden gehören.
Um das zu realisieren, gehen Sie folgendermassen vor:
Schritt 1: Definition der Datenquelle
Menüaufruf: (Administration) - (Datenquellen) - (Valuelist Provider)
Es muss zunächst ein Übergabeparameter angegeben werden z.B. intid_kunde welcher die interne ID des Datensatzes übermittelt, welche unseren Valuelist Provider aktualisiert. Im Falle der Rechnungsadressen eines Kunden wäre dies z.B. die interne Id eines Kunden
Tipp |
---|
Wenn dieser Übergabeparameter intid heißt, dann übernimmt Nuclos hier automatisch die intid des Hauptdatensatzes (hier wäre das die Anfrage). |
Folgende Spaltendefinitionen können unterschieden werden
Intid
Referenz bzw. interne Id des Datensatzes. Wird benötigt um beim Abspeichern des Datensatzes die interne Verknüpfung herzustellen. Der Benutzer sieht diese interne Id nicht.
Anzeige
So wird der Datensatz dem Benutzer Präsentiert, in diesem Fall wird nur der name als Anzeigetext verwendet. Denkbar wäre, dass Vorname + Nachename + Strasse + Hausnr in Kombination als Anzeige verwendet werden.
Info | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Die Anzeige ist nun optional. Siehe auch
Wird kein Anzeigename im Layout ausgewählt, greift automatisch die Standardeinstellung des Referenzfeldes. |
Default (optional)
Ein Ja/Nein Feld mit dem Bestimmte Datensätze als Standard gekennzeichnet werden. Im Layout kann dies Verwendet werden um beim Durchsuchen der Liste automatisch einen Standard wie z.B. die Standardadresse auswählen zu lassen.
Tipp | ||
---|---|---|
| ||
$username kann in Bedingung oder Ihrem SQL Quelltext verwendet werden und gibt den aktuell angemeldeten Benutzer aus z.B. 'nuclos' $mandator gibt die UID des aktuellen Mandanten, welchen der Benutzer ausgewählt hat, aus, z.B. 'UFJNBNUH4UpFqcDEDzt0' $locale gibt die Datensprache der Session des aktuell angemeldeten Benutzers aus, z.B. 'de_DE'. $searchmode (boolean) wird vom System auf true gesetzt, wenn sich der VLP in einer Suchmaske befindet, ansonsten false. Der Parameter muss in der Abfrage in Hochkommata gesetzt werden, also '$searchmode'. Die Parameter können erst verwendet werden, wenn sie im VLP unter Parameter deklariert worden sind |
Info | ||
---|---|---|
| ||
|
Schritt 2: Layouteditor -> Valuelist Provider im Zielfeld einrichten
Im Layout wird der Valuelist Provider über die Palette an des gewünscht Feld, in diesem Fall Rechnungsadresse, gehängt.
ID Feld
das ist das weiter oben erwähnte, interne Referenzfeld welches Nuclos zum Verknüpfen der Datensätze benötigt
Anzeigename
Das bekommt der Benutzer angezeigt
Defaultflag
Wenn in der Datenquelle des Valuelist Provider ein Standardflag gesetzt wurde (z.B. Standardadresse), so kann das hier angegeben werden.
Schritt 3: Layoutregel anlegen
Definieren Sie nun auf dem Ausgangsfeld eine Regel:
Ereignis: Wenn Wert sich ändert
Aktionstyp: Werteliste aktualisieren
Businessobjekt: Businessobjekt der Zielkomponente, falls es sich um ein Unterformular handelt. Wenn sich das Zielfeld im gleichen Businessobjekt befindet, bleibt dieses Feld leer.
Zielkomponente: Feld (Combobox), dessen Werte aktualisiert werden sollen.
Parameter: Parametername, der in der Datenquelle definiert wurde als Bedingung definiert wurde.
Im Beispiel sieht diese Einstellung so aus:
Nun haben Sie die Werte in der Combobox entsprechend eingeschränkt.
Vordefinierte Valuelist Provider
Statusfeld
Dieser ValuelistProvider wird verwendet, um die Werteliste (Attribut für Status) des Statusfeldes auf bestimmte Businessobjekte einzugrenzen.
Eigenschaften der Komponente bearbeiten:
Parameter Name | Parameter Value |
---|---|
Businessobjekte | Name der Businessobjekt(interner Name) |
Process
Dieser ValuelistProvider wird verwendet, um die Werteliste (Attribut für Aktion) des Aktionsfeldes auf bestimmte Businessobjekten einzugrenzen.
Eigenschaften der Komponente bearbeiten:
Parameter Name | Parameter Value |
---|---|
Businessobjekten | Name der Businessobjekt (interner Name) |
Parameters
In Spaltendefinitioinen von Unterformulardaten lassen sich mit diesem ValuelistProvider Wertelisten hinterlegen.
Parameter Name | Parameter Value |
---|---|
showValue | Wert, der angezeigt werden soll |
Ergebnis:
Valuelist Provider für Attribute vom Typ "Text"
Um der Nutzerin eine definierte Menge von möglichen Werten für ein Attribut vom Typ "Text" zu ermöglichen (und wenn eine Referenz ausdrücklich nicht gewünscht ist [bspw für Feld "Anrede"]), bietet der Layouteditor die Möglichkeit eine Combobox-Komponente mit einem Valuelist Provider für dieses Attribut auszuwählen.
Dafür müssen zunächst bei der Auswahl des Attributs der Combobox-Komponente der Haken "Zeige alle Attribute" gesetzt werden und dann das gewünschte Text-Attribut ausgewählt werden:
Daraufhin muss ein Valuelist Provider für die Komponente hinterlegt werden. Dabei darf das ID Feld nicht gesetzt sein:
Die Werte aus der Liste können dann wie gewohnt bei der Bearbeitung des Datensatzes ausgewählt werden:
Wenn dem Nutzer zusätzlich die Möglichkeit gegeben werden soll nicht vordefinierte Werte in das Feld einzutragen, muss im Layouteditor die Eigenschaft "Werteliste editierbar" der Combobox-Komponente angehakt werden:
Somit kann nun ein beliebiger Wert in das Feld geschrieben werden: