Affichage Pillbox non supporté dans un contexte d'héritage

Tags: #<Tag:0x00007f49155e6db0>

Bonjour,

Nous avons trois objets A, B et B’ (B’ hérite de B) et une relation N-N (simple) entre A et B’.
L’affichage Pillbox des B’ depuis A fonctionne bien.
L’affichage Pillbox des A depuis B’ ne fonctionne pas (affichage d’une liste simple + warning dans les logs system Unsupported pillbox rendering in object BCSIMajorDomainEA, the link is not a simple N,N relationship => Forced to list rendering).

Nous avons utilisé un modèle d’héritage pour une raison assez simple initialement: le hook getUserKeyLabel de B n’a pas connaissance du parent (objet A) -> getParentObject() est null. Si nous avions connaissance depuis B que c’est A qui l’instancie (dans une Pillbox), alors nous n’aurions pas besoin de passer par B’ (héritant de B).

Y-a-t-il un moyen de contourner ce problème ?

Une pillbox ne fonctionne que si c’est une relation N,N simple = exactement 2 foreign keys clés fonctionnelles obligatoires, je ne vois pas trop le rapport avec un héritage sur A ou B mais il doit y avoir un cas non géré.

Peut on avoir la définition exacte de votre relation N,N “simple” ?

On pourra peut être gérer d’autres cas à partir du moment où la création du lien ne dépend pas d’autres champs obligatoires ou clés non valorisables dans ce genre d’affichage.

Que donne la requête suivante en remplaçant le nom de objetNN :

select o2.obj_name, f.fld_name, o2.obj_dbtable, f.fld_dbname
  from m_object o, m_objfield l, m_field f, m_object o2
 where o.row_id = l.obf_object_id
   and f.row_id = l.obf_field_id
   and l.obf_ref_object_id = o2.row_id
   and l.obf_ref_field_id is null
   and f.fld_dbname is not null
   and f.fld_fonctid = '1'
   and f.fld_required = '1'
   and o.obj_name = 'objetNN'

Qui cherche toutes les FK de la relation et les objets liés.
Si ce n’est pas exactement 2 lignes vers A et B’ alors Simplicité considère que ce n’est pas une N,N simple, et interdit le rendering pillbox (le message dans les logs).

Bonsoir François,
merci beaucoup pour ton retour rapide.
Voici les éléments demandés: (objetNN=BCSIBusnDatamapMajorDomain)


Et la configuration de la N-N:

Problème résolu: le deuxième field BusnDatamapMajorDomainDatamapId n’était pas required… (erreur due à l’interface chaise/clavier comme souvent).

1 Like