Home Forum Nuclos Konfiguration Maskenlayouts Clientseitige Regel Layout Ausführungszeitpunkt

Ansicht von 14 Beiträgen - 1 bis 14 (von insgesamt 14)
  • Autor
    Beiträge
  • #7050
    Ferdinand Hackl
    Teilnehmer

    Hallo,

    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 false

    lg
    Ferdinand

    #7052
    Marc Finke
    Teilnehmer

    Hallo,

    es wäre hilfreich wenn wir die verwendete Nuclos-Version erfahren könnten.

    Danke und Gruß

    #7053
    Marc Finke
    Teilnehmer

    Hallo,
    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ß

    #7054
    Ferdinand Hackl
    Teilnehmer

    Nuclos V3.14 – 3.14.0003 (2013-09-23 08:31:11)
    User: nuclos
    Server: default
    JRE Version 1.7.0_40

    Windows 7 64bit

    #7055
    Markus Glitzner
    Teilnehmer

    schon 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ß
    Hugo

    #7056
    Marc Finke
    Teilnehmer

    Auch 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.

    #7057
    Ferdinand Hackl
    Teilnehmer

    Logausgabe 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ührt

    #7058
    Marc Finke
    Teilnehmer

    So kommen wir denke ich nicht weiter.
    Gibt es die Möglichkeit einen Dump oder das Nuclet zu bekommen?

    #7059
    Ferdinand Hackl
    Teilnehmer

    ja ich kann das Nuclet exportieren – wo soll ich es hochladen? oder per Mail?

    #7060
    Markus Glitzner
    Teilnehmer

    Ich 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.

    #7062
    Frank Pavlic
    Teilnehmer

    Hallo,
    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ß
    Frank

    #7064
    Marc Finke
    Teilnehmer
    #7068
    Ferdinand Hackl
    Teilnehmer

    Danke 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.

    #7076
    Marc Finke
    Teilnehmer

    Beim 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.

Ansicht von 14 Beiträgen - 1 bis 14 (von insgesamt 14)