Erreur lors d'une création en liste avec contrainte

Bonjour,

Sur un objet métier j’ai une contrainte de visibilité sur un lien pillbox.

Elle provoque une erreur lors de la création en liste

Si je désactive l’impact (order = 0) l’erreur n’apparaît plus.

Pourtant normalement ma contrainte ne doit pas s’exécuter en liste

Je pense que mon problème est lié à ce ticket Impossible d’accéder au form d'un objet métier - #9 by Quentin_RICO mais le problème ne semble pas résolu.

Merci d’avance pour votre aide !
Emmanuelle

Version=4.0.P25
BuiltOn=2021-05-11 12:16 (revision f1e6126ade1a40961ade1593e9981d6c5f386392)

Le contexte de LIST s’applique sur une liste en lecture seule.
Si vous êtes en création ou mise à jour, le contexte même sur une liste du record passe en CREATE ou UPDATE, et non plus LIST. Il faut voir ça comme un formulaire d’édition sur une ligne, les règles de la création ou de la mise à jour s’appliquent.

Vous devez revoir votre test pour limiter ça au formulaire seul, et changer d’expression front par exemple :

$('.objform.object-MyObject').length > 0 qui teste si le formulaire est affiché.

Ou interdire la création/mise à jour en liste car il est impossible de retirer des colonnes contextuellement par ligne.

J’ai testé ce code et je n’ai plus l’erreur mais ma contrainte ne s’applique plus même en formulaire :’(
Je pense que ma seule solution est de la supprimer ou de prendre une autre présentation que pillbox.

Peut être que le panel n’est pas encore affiché quand la contrainte est appelée.

Dans ce cas il faut faire un hook front par code form.onload.

Sur le change de votre champ d’impact, il faut masquer votre relation :

var field = $ui.getUIField(ctn, obj, "myField");
field.ui.on("change", function() {
	var myview = $ui.getUIView(ctn, obj, "MyChildObject;myForeignKeyField");
	myview.ui.visible(field.ui.val() == "something", true /* to slide */);
});

ou sinon mettre votre Pillbox dans un div particulière du template et juste faire show/hide de cette div dans le code.

https://docs.simplicite.io/documentation/04-ui/responsive.md#business-objects-hooks