Utilisation contrainte en V4 pour valoriser un champs

4.0
Tags: #<Tag:0x00007f361cd19530>
Utilisation contrainte en V4 pour valoriser un champs
0.0 0

#1

Bonjour,

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

Cordialement,
Zouhair


#2

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.


#3

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


#4

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


#5

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