Impossible d’accéder au form d'un objet métier

Bonjour,

Je n’arrive pas à accéder au form d’un de mes objets.
J’ai cette alerte : “Service error: Cannot read property ‘ui’ of undefined” mais je ne trouve rien dans les system logs.
Avez-vous une idée d’où cela peut venir ?

Cordialement
Quentin RICO

Bonjour,

Ca sent un problème front sur le formulaire.

  • Avez vous du code SCRIPT ? si oui il faut le mettre en commentaire ou le debugger
  • Sinon que dit la console javascript du navigateur ? merci de nous donner la stack pour voir à quel niveau ça plante dans le code UI.

Je n’ai pas de script sur le formulaire.
Voici ce que m’indique ma console navigateur
console navigateur.log (5.0 KB)

Voici je pense l’appel de l’alerte qui suit l’application des contraintes.

alert @ ui-bundle.js?_=6c215c2cd2339a288a59abafe6be27f56c38d8c3:626
app.error @ ui-bundle.js?_=6c215c2cd2339a288a59abafe6be27f56c38d8c3:511
_apply @ resource?row_id=_CONSTRAINTS_RciData&d=responsive_ThemeAdmin&_=6c215c2cd2339a288a59abafe6be27f56c38d8c3_20191217021648:7
Simplicite.UI.constraints.RciData @ resource?row_id=_CONSTRAINTS_RciData&d=responsive_ThemeAdmin&_=6c215c2cd2339a288a59abafe6be27f56c38d8c3_20191217021648:8
applyConstraints @ ui-bundle.js?_=6c215c2cd2339a288a59abafe6be27f56c38d8c3:1085

Avez-vous des contraintes sur votre objet ?
Suspendez les (en mettant un ordre = 0) pour voir si ça vient là.

C’est effectivement un problème avec l’impact d’une contrainte.
Mais c’est quelque chose que je n’ai pas touché depuis quelque temps et il était fonctionnel.

J’ai un objet avec un lien récursif N-N et je veux rendre les liens invisibles selon un flag qui est un boolean.
Pour le lien père de la récursive pas de problème par contre dès que je rentre le lien fils dans l’impact pour le rendre invisible cela m’affiche l’erreur d’ui.

votre contrainte ne doit pas être assez robuste pour couvrir tous vos cas.
merci d’exposer sa définition et ses scripts.

Voici l’export de ma contrainte download (1).xlsx (5.5 KB)

impossible d’ouvrir votre fichier, copier coller votre script de contrainte en markdown.

Voici la définition de ma contrainte :

et celle de mon impact :

true = signifie que votre contrainte s’applique partout et tout le temps, donc y compris en liste.
Est ce que votre attribut rciDatGroup est visible en liste ou étendu ? le champ peut ne pas être remonté dans les metadata du front dans certains contextes.

  • soit vous devez spécifier dans quel contexte la contrainte s’applique (et pas juste true)
  • soit mettez un test sur l’impact pour que ce soit “passant” même si le champ n’est pas là dans certains contextes (popup, liste…)

du genre :
obj.getField("rciDatGroup")!=null ? obj.getFieldValue("rciDatGroup")=="0" : true

J’ai fait des tests, même avec le code j’ai l’erreur.
Par contre sur mon link mon rendering est en pillbox et si je le mets en child list je n’ai plus l’erreur.
Et quand je n’ai pas de contrainte sur l’objet, l’affichage de la pillbox sur la liste fonctionne correctement.

Je pense qu’il faut que je modifie le contexte d’application de la contrainte, est-il possible d’appliquer la contrainte uniquement sur le form et non sur la liste ?

  • Il est inutile d’appliquer votre contrainte en back s’il s’agit juste d’afficher ou pas quelque chose (effet = front-end semble suffisant dans votre cas).
  • On n’a jamais utilisé/testé l’usage de contraintes sur des Links en pillbox.
    Cette fonctionnalité a une semaine donc il doit encore y avoir des choses non prévues… on va rendre le code plus robuste sur ce cas si on parvient à le reproduire

Sinon pour les expressions pré-processées voici la doc :
https://www.simplicite.io/resources/documentation/01-core/expressions.md

Dans le cas d’un formulaire en mise à jour : [CONTEXT:UPDATE]
équivalant à écrire en contrainte front : context==Simplicite.CONTEXT_UPDATE
équivalant à écrire en contrainte back : context==ObjectCore.CONTEXT_UPDATE

Dans le cas d’un liste principale : [CONTEXT:LIST]

En back les contextes sont dans des constantes ObjectCore.CONTEXT_<nom>
En frontles contextes sont dans des constantes Simplicite.CONTEXT_<nom>

Cela ne fonctionne pas si je mets " [CONTEXT:UPDATE] " pour l’expression de la contrainte, je n’arrive jamais sur l’impact.
par contre c’est bon si je mets " ![CONTEXT:LIST] "
Merci de votre aide