MichaelGutwenig
I'm new here

Regel: im Handlungsanweisungsteil (DO) einen NICHT im Validierungsteil (WITH) ermittelten Wert zuweisen

Ich habe ein einfaches, aber dennoch aktuell nicht zu lösendes Problem. Ich möchte folgende Regel definieren:

WENN Feld A gefüllt ist

DANN Feld B mit einem VALUE füllen bzw. Combobox B auf einen ENTRY setzen (der NICHT aus der Wertermittlung in WITH stammt).

Folgendes RULES-Gerüst existiert dazu:

<ON_EVENT>
   <WITH>
   <NOT>
   <PROPERTY source="st_feld_1" name="EMPTY"/>
   </NOT>
   </WITH>
   <DO>
   <PROPERTY source="st_feld_2" name="VALUE" />
   <!-- WIE kann ich angeben, welchen VALUE (bzw.
     im Combobox-Fall welchen ENTRY) das Feld st_feld_2 bekommen soll -->
   </DO>

    </ON_EVENT>

0 Kudos
7 Replies
broszeit
I'm new here

Hallo,

was ist denn der Anwendungsfall dafür?

Aus welcher Quelle soll der Wert, der in st_feld_2 gesetzt werden soll, stattdessen stammen? Irgendeine Quelle muss es ja geben...

Prinzipiell sollte das geforderte Verhalten aber möglich sein. Wahrscheinlich dadurch dass man einen ValueService implementiert. (Näheres dazu auch hier in der Community)

Viele Grüße

Rouven

0 Kudos
StefanSchulz
I'm new here

Hi,

was soll denn passieren, wenn die Bedingung im With-Teil nicht zutrifft, also st_feld_1 leer ist?

Klingt für mich nach einer Regel, die nur dann ausgeführt werden soll, wenn die Bedingung nicht erfüllt ist. Hierfür kann man den IF-Teil einer Regel definieren. Dann bleibt der WITH-Teil auch für die Wertebestimmung frei. Allerdings würde die Regel aktuell den Wert immer wieder neu setzen, da fehlt doch noch eine Abfrage, ob da schon was steht, oder?

Gruß

Stefan

0 Kudos

Im in einer Regel ja nicht definierbaren ELSE-Fall soll das feld_2 geleert werden; das müsste ich dann noch über eine zweite Regel festlegen. Ihre Vermutung trifft zwar zu, aber meine Bedingung im <IF> zu formulieren schied für mich aus, da das zu prüfende Verhalten sich ja durch eine Benutzeraktion (Feldinhalt erfassen oder leeren) ja ständig ändern kann und nach Änderung des Benutzers nicht noch einmal das in IF formulierte geprüft werden würde. Ist das richtig? Sie haben recht;es muss noch geprüft werden, ob feld_2 bereits den gewünschten Inhalt hat, um ein endloses immer-wieder-füllen zu verhindern.

Zur Frage von Ihrem Kollegen: der Anwendungsfall ist, in Feld 2 einen Vorgabewert zu schreiben und diese Aktion abhängig von der Tatsache zu machen, ob Feld 1 gefüllt ist oder nicht. Beispiel: in Feld 1 erfasse ich eine Überschrift zu einer Seite und in Feld 2 lege ich die Größe der Überschrift fest. Wenn keine Überschrift da ist, gibt es natürlich auch keine Größe dazu; aber WENN eine Überschrift da ist, dann soll im Feld 2 (Größe) 14 px voreingestellt werden (im konkreten Fall ist Feld 2 eine Combobox und 14 px ein ENTRY daraus)

Vielen Dank für Ihre Rückmeldung!

0 Kudos

Der IF-Teil wird natürlich bei jeder Änderung geprüft. Das IF stellt lediglich eine Schranke für die Ausführung der Regel dar. Klingt nach einer Zwei-Regeln-mit-IF Lösung Smiley Happy

Gruß
Stefan

0 Kudos

Danke für den Hinweis mit IF; das wurde in einer FirstSpirit-5-Schulung anders vermittelt. Ein Textfeld ist es mir auf diese Weise gelungen, zu füllen. Leider ist mein konkreter Anwendungsfall, eine Combobox zu füllen, was mir bisher durch Lesen der Doku und Herumprobieren nicht gelungen ist. Mein letzter Versuch war der Folgende:

<ON_EVENT>
   <IF>
   <NOT>
   <PROPERTY source="st_ueberschrift" name="EMPTY"/>
   </NOT>
   </IF>
   <WITH>
   <TEXT>h2</TEXT>
   </WITH>
   <DO>
   <PROPERTY source="st_ueberschriftsgroesse" name="ENTRY" />
   </DO>

    </ON_EVENT>

wobei h2 ein ENTRY aus der Combobox st_ueberschriftsgroesse ist. Leider ist entweder der Wertermittlungsteil so falsch oder der Handlungsteil. Laut Doku ist für den Handlungsteil (DO) überhaupt kein ENTRY erwähnt; abspeichern lässt es sich aber so schon. Aber egal, ob mit ENTRY oder VALUE im Handlungsteil, es funktioniert (noch) nicht.

Vielen Dank für Ihre Rückmeldung!

0 Kudos

Moin,

das Setzen über ENTRY wird nicht unterstützt. Eigentlich sollte im Log eine entsprechende Fehlermeldung erscheinen, wenn die Regel ausgeführt wird. Sie können natürlich einen entsprechenden Feature-Antrag stellen, aber eine Einführung vor Version 5.1 ist eher unwahrscheinlich.

Benötigt wird hier ein Option-Wert. Dieser kann leider über die Regeln nicht erzeugt werden. Eine Möglichkeit wäre, eine versteckte Combobox-Komponente zu definieren, deren Wert per Default auf "h2" gesetzt ist. Diesen kann man dann im WITH-Teil auslesen. Bei identischer Konfiguration sollte der Optionswert kompatibel sein.

Noch ein Hinweis: obige Regel wird für jede Änderung an st_ueberschrift ausgeführt. Das heißt, bei jeder Auswahl in st_ueberschrift wird st_ueberschriftsgroesse neu gesetzt und potentiell überschrieben. Ich bin mir nicht sicher, ob das so gewollt ist, kann aber natürlich sein.

Gruß,

Stefan

Vielen Dank für die Umgehungslösung mit der versteckten, zweiten Combobox. Für die Möglichkeit, auch direkt einen ENTRY im Handlungsanweisungsteil einer Regel setzen zu können, habe ich eine neue Idee erfasst: https://community.e-spirit.com/ideas/1325

0 Kudos