Visibilité des panels (links) non prises en compte

Bonjour,
Depuis la V5, la visibilité des links (panels) n’est plus pris en compte.
c’est à dire : J’ai un lien dont le champ Visible panel = No, mais le panel reste visible, comportement inexistant en V4.

Bonjour,

Cette propriété fonctionne toujours.
Par exemple, quand vous ouvrez un module vous ne voyez que quelques onglets et non par l’intégralité des objets de configuration du module, tous les liens sont bien en visibilité = Non.

  • Quelle est votre version exacte ?
  • Est-ce global sur votre environnement ou juste sur un de vos objets ?
  • Avez vous du code au niveau de l’objet parent sur le hook canReference ou ailleurs qui accède au lien ou sa foreign-key ?
  • ou des contraintes de visibilité sur des vues ou links de l’objet ?
  • ou encore le lien (le champ foreign-key lié à l’objet) est-il surchargé dans un héritage ?

Version : 5.1.14
Voici deux captures qui décrit mon cas :


Je ne comprends pas bien votre copie d’écran, vous avez 2 objets historiques sur votre objet ? l’un à 0 et l’autre à 496 lignes ?

Le suffix “xxxHistoric” pour un nom d’objet est réservé pour que Simplicité historise les données à chaque mise à jour de l’objet “xxx” si celui-ci est déclaré historisable.

Je vais vérifier qu’un panel historic peut toujours bien se masquer.
Par ailleurs vous n’avez pas répondu à mes autres questions.

Un onglet historique peut bien se masquer comme n’importe quel autre.
Vous devez avoir du code dans le hook canReference ou via contrainte.

Bonjour François,

Désolé, je vous ai mal exposé le problème, en fait c’est le code canReference qui pose problème.

Merci

Bonjour François,

Je reviens sur ce sujet, ça veut dire que si j’ai du code en canReference, ça impact toute la configuration ?

Merci

Tout dépend du code en question.
Le hook canReference est appelé pour chaque objet lié et habilité à l’utilisateur dans le paramétrage.

Par défaut, il retourne true. Il sert donc plutôt à retourner false dans certains cas pour retirer les onglets sur la UI, empêcher les exports en cascade… en fonction du contexte : les responsabilités, les données de l’objet parent, etc.

Il faut donc que votre code fasse attention de traiter tous les cas ou alors retourner super.canReference(child,reffield), sinon il impactera tous les autres onglets (potentiellement hérités).

Ah c’est le return super.canReference qui manque dans mon code.
Merci

Pour être plus précis, la méthode canReference par défaut est un peu plus maline que de retourner true par défaut. Elle regarde surtout :

  • si la Vue associée est visible car on pourrait faire par code par ailleurs
    getView("child;reffield").setVisible(false)
  • et si le Lien associé est également visible : car on pourrait aussi faire ailleurs
    getLink("child", "reffield").setVisible(false)

En général dans tous les hooks, il faut toujours appeler la méthode “super” dans les autres cas pour revenir au comportement par défaut ou hérité.

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.