Home › Forum › Nuclos Konfiguration › Maskenlayouts › Clientseitige Regel Layout Ausführungszeitpunkt
- Dieses Thema hat 13 Antworten und 4 Teilnehmer, und wurde zuletzt aktualisiert vor 10 Jahren, 2 Monaten von
Marc Finke.
-
AutorBeiträge
-
25 September 2013 um 13:15 Uhr #7050
Ferdinand Hackl
TeilnehmerHallo,
ich habe eine Frage zu Clientseitigen Regeln. Ist es eigenlich gewollt dass diese erst beim speichern angewendet werden?
Es macht aus meiner Sicht nicht viel Sinn wenn ich bei Aktiv(Dynamisch) eine Regel einbaue die aber erst greift wenn der Datensatz gespeichert wird und gleichzeitig beim Speichern eine Fehlermeldung anzeige das ein Feld nicht ausgefüllt wurde welches in diesem Fall erst beim Speichern aktiviert wird. Ich glaub mich zu erinnern dass früher die Clientseitigen Regel sofort also sobald sich der Wert geändert hat angewendet wurde.
Meine Clientregel:
if (context.“#{CWT.ckunden.zahlungsweise.value}“.equals(„Rechnung“)) {
return true
}
return falselg
Ferdinand25 September 2013 um 13:24 Uhr #7052Marc Finke
TeilnehmerHallo,
es wäre hilfreich wenn wir die verwendete Nuclos-Version erfahren könnten.
Danke und Gruß
25 September 2013 um 14:00 Uhr #7053Marc Finke
TeilnehmerHallo,
ich habe gerade mit der aktuellsten Nuclos Version 3.14.14 diesen Fall nachgebaut.Ich habe auf einem Textfeld, die Groovy-Regel gelegt,
wenn ein entsprechender Eintrag in einer Combo-Box selektiert ist,
bitte das Feld aktiv bzw. inaktiv setzen.Dies funktioniert während der Eingabe.
Eventuell wären noch weitere Hinweise über die Konfiguration hilfreich.
Danke und Gruß
25 September 2013 um 14:03 Uhr #7054Ferdinand Hackl
TeilnehmerNuclos V3.14 – 3.14.0003 (2013-09-23 08:31:11)
User: nuclos
Server: default
JRE Version 1.7.0_40Windows 7 64bit
25 September 2013 um 14:55 Uhr #7055Markus Glitzner
Teilnehmerschon mal so probiert?
if ( „Rechnung“.equals(context.“#{CWT.ckunden.zahlungsweise.value}“ )Grund: In groovy muss geau so wie in Java null abgefangen werden
Und ckunden wird wirklich klein geschrieben?
Gruß
Hugo25 September 2013 um 15:03 Uhr #7056Marc Finke
TeilnehmerAuch mit der erwähnten Version (hier 3.14.13) funktioniert mein Beispiel.
Der Groovy-Code wird während der Eingabe durchlaufen.Bau doch einfach mal eine Logausgabe in das Script ein:
log.info(„Logausgabe“)und prüfe in der Client-Logausgabe bzw. Fenster-> Ausgabe (Scripting)
(sichtbar für Super-User), ob eine Logausgabe während der Eingabe in der Maske erfolgt.25 September 2013 um 15:53 Uhr #7057Ferdinand Hackl
TeilnehmerLogausgabe eingebaut und es erfolgt keine Logausgabe während der Eingabe. Erst beim speichern wird im Log etwas geschrieben – dann auch immer doppelt.
Auch beim öffnen des Datensatzes erfolgt ein Eintrag im Logfile
2013-09-25 13:51:46,843 INFO [org.nuclos.client.scripting.ScriptEvaluator] check Zahlungsweise
@hugo: ja ich hab es auch schon mal umgekehrt probiert – die Regel funktioniert ja wird aber eben nur beim Speichern ausgeführt25 September 2013 um 17:45 Uhr #7058Marc Finke
TeilnehmerSo kommen wir denke ich nicht weiter.
Gibt es die Möglichkeit einen Dump oder das Nuclet zu bekommen?25 September 2013 um 19:42 Uhr #7059Ferdinand Hackl
Teilnehmerja ich kann das Nuclet exportieren – wo soll ich es hochladen? oder per Mail?
25 September 2013 um 20:52 Uhr #7060Markus Glitzner
TeilnehmerIch hatte das Problem auch schon mal und auch gedacht es wird nur beim Speichern ausgeführt, was aber nicht der Fall war. Was die genaue Urache in meinem Fall war weis ich zwar nicht mehr, aber das Problem lag daran, dass irgend etwas vor dem Speichern nicht verfügbar war und nach dem Speichern schon.
Hast du ev. unterschiedliche Formulare je Status oder Aktion, oder greifst du auf ein nicht sichtbares Attribut via groovy zu.
26 September 2013 um 02:12 Uhr #7062Frank Pavlic
TeilnehmerHallo,
wenn die Zahlungsweise eine Combobox oder LOV darstellt, dann handelt es sich dabei
höchstwahrscheinlich um ein Referenzfeld. Wenn das der Fall ist, dann ist der
Zugriff darauf falsch, denn context.“#{CWT.ckunden.zahlungsweise.value}“ liefert sonst was, nur nicht den Wert „Rechnung“.Richtig müsste sein:
def zval = context."#{CWT.ckunden.zahlungsweise.context}"."#{CWT.zahlungsweise.zahlungstext}"
if (zval != null && "Rechnung".equals(zval))
return true;
return false;
zahlungsweise = Name der Entität, worauf das FEld ckunden.zahlungsweise referenziert
zahlungstext = Textfeld in Entität „zahlungsweise“.Gruß
Frank26 September 2013 um 10:07 Uhr #7064Marc Finke
TeilnehmerBitte an
marc.finke@www.nuclos.de26 September 2013 um 16:24 Uhr #7068Ferdinand Hackl
TeilnehmerDanke Problem wurde gelöst und war eigentlich mein Fehler – die Angabe der Entiät war falsch. Was mich aber nachvwievor wundert ist dass die Regel beim Speichern des Datensatzes richtig ausgeführt wurde obwohl die falsche Entität angegeben war.
27 September 2013 um 11:39 Uhr #7076Marc Finke
TeilnehmerBeim Speichern spielt die Entität keine Rolle im Groovy Kontext.
Während der Eingabe schon.Da das Feld den gleichen Name hat, wird der Wert abgeholt.
Wir prüfen, ob das ein Fehler ist und ob er Seiten-Effekte mit sich bringt.
-
AutorBeiträge