Utilisation contrainte en V4 pour valoriser un champs

Bonjour,

Je cherche à valoriser un champs selon la valeur d’un autre champs. Pouvez-vous m’envoyer un exemple de paramétrage.

Cordialement,
Zouhair

On peut créer une contrainte avec un impact sur un attribut. Il faut savoir si la valeur est forcée, ou proposée mais modifiable.

Contrainte sur l’objet : test si un champ myfield1 vaut value1

  • expression = [VALUE:myfield1]==“value1”
  • Effet: front (pour l’exécuter sur l’IHM = valeur proposée) et/ou back (lors du save serveur = valeur forcée)

Avec 1 Impact :

  • Attribut = “myfield2”
  • propriété du champ = “Valeur du champ”
  • expression = valeur fixe “value2” ou une expression [VALUE:fieldx]+" and "+[VALUE:fieldy]

Pour éviter de faire N contraintes pour testee N valeurs, on peut aussi faire une contrainte générique

  • contrainte expression = true pour l’exécuter tout le temps
  • impact expr = [VALUE:myfield1 ]==“A” ? “val1”: ([VALUE:myfield1 ]==“B” ? “val2” : “val3”)
    ou une fonction auto-appelante si l’algo est plus complexe (function() { if … return “x” else return “y”; })()

Si la règle est trop complexe pour une contrainte (par exemple faire une requete SQL), il faudra mettre du script dans le initUpdate, le postValidate et/ou le preSave.

Super ça marche.

Une autre question : Est ce qu’on peut dans la même contrainte valoriser plusieurs attributs; je m’explique :

Si myfield1 = Valeur1 alors myfield2=toto sinon myfield3=titi

En vous remerciant par avance pour vos réponses.

Zouhair

On n’a pas modélisé l’impact “else”

Il peut effectivement y avoir plusieurs impacts ordonnées pour une même contrainte = expression
Mais pour le “else”, il faut faire une autre contrainte avec [VALUE:myfield1] != "Valeur1"
et un impact sur myfield3

Pour gérer le “else” on peut écrire des expressions complexes au niveau des impacts