Hauptmenü

Auswahl eines Wertes aus einer Selection Liste

Begonnen von mplan, 09.08.2024 15:22:27

⏪ vorheriges - nächstes ⏩

mplan

Hallo,
bräuchte mal wieder euren Rat, um am Ende eine Checkliste auszuwählen:

Wir haben in der Oberfläche Platz für zwei Checklisten definiert. dazu haben wir zwei dynamische Felder vom Typ Checkliste erstellt und über die GUI-Konfiguration eingebunden.
Nun möchten wir verschiedene Checklisten diesen Plätzen zuweisen. wurde eine Aktion erstellt, die über ein Auswahlfeld (dyn. Feld) zwischen mehrere Checklisten-Namen anzeigt, über ein weiteres Feld wird die Platzierung bestimmt.
In der Post-Action wurde dann eine Bedingung gesetzt, analog zu einem anderen Forenbeitrag.
Dort wurde die Checkliste innerhalb einer Aktion direkt einer Variable zugewiesen.

Nun möchte ich die Checklisten-Definitionen als Werte eines dyn.Feldes vom Typ Selection halten, damit man es einfacher editieren und erweitern kann. Die Definitionen sollen in einem dyn. Feld anstatt direkt in einer Aktion/Job gespeichert werden.
Leider bin ich nicht in der Lage die Werte auszulesen:
Beispiel-Definition dyn. Feld ' dfchkTexte ' (Selection):
Key  | Value
chk1 | [   {  "id": "100",  ...}]
chk2 | [   {  "id": "100",  ...}] 
chk3 | [   {  "id": "100",  ...}]

Das Auslesen eines Wertes über Platzhalter <KIX_TICKET_DynamicField_dfchkTexte_ObjectValue>  scheint aber nicht zu funktionieren, erst recht nicht, wenn man den 2.wert abrufen möchte
Erst, wenn ein Wert manuell gesetzt ist, kann man den Wert mit _ObjectValue lesen. Ansonsten ist es immer leer.

Wie kann man direkt den Wert z.B. von chk2 per Platzhalter lesen?
Ein Versuch mit <KIX_TICKET_DynamicField_dfchkTexte_ObjectValue_2> bringt auch nichts zurück.

Wie kann man (Checklisten)-Texte über Platzhalter oder andere Wege gezielt von einem Selection Feld lesen.
Oder gibt es einen besseren Weg seinen Checklisten-Katalog aufzubauen und zu referenzieren?

Hoffe, ich konnte mich verständlich machen, was das Ziel und das Problem ist... ;-)
Viele Grüße
Michael



Benedikt Geißler

Hallo Michael,

Die Platzhalter <KIX_TICKET_DynamicField_...> beziehen sich immer nur auf den aktuell am Ticket gesetzten Wert. Daher funktioniert es nicht direkt, über das Selection-Feld alle möglichen Checklisten-Definitionen zu speichern.

Hier wäre ein Vorschlag, wie man so etwas dennoch umsetzen könnte. Und zwar habe ich zusätzlich zum Selection- und Checklisten-DF zwei Ticketaktionen erstellt. Die eine Ticketaktion enthält nur die Checkliste und dient zum Bearbeiten dieser. Die andere enthält das Auswahl-DF und eine PostAction:

Bildschirmfoto vom 2024-08-19 13-40-48.png

Der Aufbau ist grob gesagt wie folgt:
  • Bedingung "Auswahl-DF gleich 1"
  • → wenn ja, setze das Checklisten-DF auf den Wert <leere Checklisten-Definition 1>
  • Bedingung "Auswahl-DF gleich 2"
  • → wenn ja, setze das Checklisten-DF auf den Wert <leere Checklisten-Definition 2>
  • diese Liste ließe sich mit weiteren möglichen Checklisten-Definitionen fortsetzen

Die Bedingungen sind jeweils so aufgebaut:
'<KIX_TICKET_DynamicField_CheckListSelect_ObjectValue>' eq '1'Durch die Anführungszeichen um den Platzhalter sowe Operatior "eq" wird sichergestellt, dass Zeichenketten verglichen werden und somit Syntaxfehlern vorgebeugt.
Beim Setzen des DFs wird dann anschließend der komplette JSON-String, wie er auch in die Datenbank geschrieben wird, verwendet.

Das Auswahl-DF enthält nur die Schlüssel 1, 2, ... und dazugehörige Anzeigewerte:
Bildschirmfoto vom 2024-08-19 13-47-10.png

Anschließend wäre der Workflow wie folgt:
  • mit der einen Aktion die Checkliste auswählen:
    Bildschirmfoto vom 2024-08-19 13-54-44.png
  • mit der anderen Aktion die Checkliste bearbeiten:
    Bildschirmfoto vom 2024-08-19 13-55-07.png

Die Einbindung in die Ticketansicht erfolgt ganz normal über die GUI-Konfiguration:
...
{
  "text": "Checkliste",
  "textStyle": "font-weight:bold;margin-bottom:0.5rem",
  "icon": "kix-icon-ci",
  "componentId": "dynamic-field-value",
  "componentData": {
    "name": "CheckListe"
  },
  "detailViewWidthFactor": "4",
  "conditions": [
    {
      "property": "DynamicFields.CheckListe",
      "operator": "NE",
      "value": null,
      "useObjectService": false,
      "useDisplayValue": false
    }
  ]
}
...


Viele Grüße
Benedikt

mplan

Hi Benedikt,

Danke für Deine Ideen und Antwort.
Prinzipiell ist es derzeit auch so gelöst, wie Du es beschrieben hast. Anhand eines Selection Feldes wird in einer POST Aktion geprüft, welcher Wert gewählt wurde und dann der Inhalt der Checkliste gesetzt.
Dazu muss man wohl doch die JSON Struktur in die Aktion direkt schreiben, wie es aussieht.
Mein Wunsch war es, diese Inhalte aus einer globalen Tabelle oder Selection-Liste zu nehmen. Das würde die Wartung vereinfachen (auch wenn der Code selbst dann immer wieder nachgepflegt werden müsste für die Abfragen.)
Da die Platzhalter, wie Du schreibst, immer auf das aktuelle Ticket bezogen sind, ist die globale Idee nicht machbar :-D

Viele Grüße
Michael