Problème de "duplication" des filtres lors d'une recherche

Request description

Bonjour Je rencontre un problème lors de l’utilisation des filtres dans une recherche sur l’objet SubPurposeTags. Voici le contexte :

Modèle de données :

  • J’ai trois objets manipulés : FamilyTags, PurposeTags et SubPurposeTags.

  • Ces trois objets héritent tous de l’objet LbcTags.

  • Une des propriétés de l’objet LbcTags est qu’il peut avoir un parent du même type (LbcTags).

  • Dans mon cas, SubPurposeTags a comme parent PurposeTags, et PurposeTags a comme parent FamilyTags.

Steps to reproduce

Problème rencontré :

Lorsque je fais une recherche sur l’objet SubPurposeTags et que je sélectionne un PurposeTags comme élément de filtre, je constate que les filtres sont dupliqués sur deux champs de l’objet FamilyTags. Cela fausse logiquement les résultats de la recherche.

NB: A l’inverse je ne constate pas ce comportement lorsque je sélectionne un FamilyTags

Question :

Est-ce un comportement attendu ou s’agit-il d’un bug ? Si c’est un comportement attendu, comment puis-je configurer mon modèle ou mes recherches pour éviter cette duplication des filtres et obtenir des résultats corrects ?

Merci d’avance pour votre aide et vos éclaircissements !

Technical information

Instance /health
[Platform]
Status=OK
Version=6.2.20
BuiltOn=2026-01-02 22:59
Git=6.2/247648a272030a5c6026aa4c146866d268d8b124


[Server]
ServerActiveSessions=1
ServerSessionTimeout=30
CronStarted=true

[JavaVM]
HeapFree=154732
HeapSize=462848
HeapMaxSize=4747264
TotalFreeSize=4439148

[Cache]
ObjectCache=281
ObjectCacheMax=10000
ObjectCacheRatio=2
ProcessCache=0
ProcessCacheMax=10000
ProcessCacheRatio=0
APIGrantCache=0
APIGrantCacheMax=1000
APIGrantRatio=0

[Healthcheck]
Date=2026-01-20 12:48:34
ElapsedTime=8
Simplicité logs
---paste the content of the **relevant** server-side logs---
Browser logs
---paste content of the **relevant** browser-side logs---
Other relevant information

----E.g. type of deployment, browser vendor and version, etc.----

Bonjour,

Votre modèle est assez complexe car mélange des notions d’héritage, une réflexive héritée et des relations entre enfants. J’ai du mal à voir s’il induit une ambiguïté de nommage de certains champs ramenés plusieurs fois dans l’objet.

Il faut vérifier les nommages des champs et leur unicité une fois “compilés”, les filtres s’appliquent sur les field.getFullInput() = le nom logique concatène le chemin des références jusqu’au nom du champ : en back fk1.fk2...name en front fk1__fk2__...name.

  • mettez une AppLog dans le postLoad de SubPurposeTags pour lister tous les getFullInput des champs et voir si certains sont en doublons / ceux qui partagent le filtre
  • regardez au debugger de votre navigateur la requête Ajax du search pour voir les filtres envoyés et le nom du champ correspondant, il est peut être ambiguë.

Si tout est bien identifié de manière unique c’est que Simplicité ne doit pas bien retrouver le champ dans votre objet, et il faudra améliorer l’algo en front ou en back.

Bonjour,

j’avais vérifié qu’il n’y ai pas d’ambiguité et les elements respectent bien la syntaxe fk1.fk2.name et fk1.name et name.

Voici les logs

PostLoad logs

SubPurposeTags|lambda$postLoad$0||Evénement: TagsParent.TagsParent.TagsDescriptionEn
SubPurposeTags|lambda$postLoad$0||Evénement: TagsParent.TagsParent.TagsDescriptionFr
SubPurposeTags|lambda$postLoad$0||Evénement: TagsParent.TagsDescriptionEn
SubPurposeTags|lambda$postLoad$0||Evénement: TagsParent.TagsDescriptionFr
SubPurposeTags|lambda$postLoad$0||Evénement: TagsDescriptionEn
SubPurposeTags|lambda$postLoad$0||Evénement: TagsDescriptionFr

Click sur la loupe de la relation PurposeTags dans le tableau des SubPurposeTags

search payload
  1. action

    search

  2. object

    PurposeTags

  3. inst

    ref_ajax_PurposeTags

  4. context

    11

  5. page

    0

  6. inline_documents

    infos

  7. inline_thumbnails

    true

  8. inline_objects

    true

  9. _md

    true

  10. _visible

    true

  11. _totals

    true

  12. parent

    SubPurposeTags

  13. parent_inst

    the_ajax_SubPurposeTags

  14. parent_field

    TagsParent

  15. _

    6.2.20_20260121091118

  16. _ajaxkey

    h5LG1T7zXPqgP5qz83o9

  17. _tabid

    Ud5T6

network.zip (5.5 KB) Payload reponse

Bonjour,

Les noms ont bien l’air uniques.

Par contre je ne vois pas de filtre dans vos logs.
Exemple sur la démo, recherche des produits du fournisseur “BIM” :

Le paramètre envoyé est bien le full input : demoPrdSupId__demoSupCode = bim

En effet je l’ai pas mis mais surtout j’ai envoyé le search de l’ouverture de la popin de sélection et pas la recherche après que les filtres ont été positionnés après sélection.

Merci,
d’après votre copie d’écran, le front envoie au back le filtres “Pre-sale management”" sur 2 champs ramenés.

C’est le popup/ref-picker qui valorise trop de filtres côté front.
On va voir comment améliorer le picker pour qu’il retrouve le “bon” champ.

Ok super, merci pour le support.

J’en profites, j’ai pas trouvé la configuration qui me permettrait de retirer cette loupe (demande du métier en attendant la correction de ce comportment). Je l’ai fait avec JS dans le hook front displayList mais j’avais l’impression que c’etait configurable,aurais tu des recommendations/indications sur ce sujet afin de coller au plus près du standard ?

Bonjour,

On ne peut pas sélectionner un objet si on n’a pas de droit de lecture sur cet objet lié.
Sinon ce n’est pas prévu côté front, car c’est sensé fonctionner si on a les droits.
Masquer ce bouton reste un contournement temporaire.

La fonction “loupe de recherche d’une référence” a changé de comportement en V6.3. Il est maintenant possible de choisir plusieurs références, et seul le champ recherché sera renseigné

  • par une égalité stricte ou un in(...)
  • et non plus par la foreign-key + tous les champs liées, ce qui était ambiguë dans votre cas de lien réflexif sur 3 niveaux

On va backporter temporairement cette fonctionnalité en 6.2 mais toujours en “mono-sélection”, ça devrait corriger votre problème.

Note La 6.2 est désormais en maintenance court-terme, il va falloir envisager de passer en 6.3 LTS.

Ok donc :

  • si on a le droit en lecture sur objet lié A = loupe présente sur liste d’objet B.
  • le passage en 6.3 devrait donc corriger le comportement que je rencontre actuellement.

Mais si j’avais cette demande de quand même masquer cette loupe, tout en gardant la saisie de texte dans l’input de recherche et sans modifier le droit en lecture, ca ne serait pas possible sans utiliser un contournement, c’est ca ?

Par exemple,est-ce que je pourrai retirer ce droit sur objet A lors de l’affichage en liste de l’objet B afin que le user est quand même accès en lecture sur l’objet A lorsqu’il clique sur l’entrée de menu ?

La 6.2.22 contiendra le changement de comportement comme indiqué plus haut.

Si on retire le droit de lecture sur l’objet lié, on ne pourra pas non plus taper dans l’input ramené = aucune recherche de référence par complétion = recherche dans l’index fulltext via une présentation en dropdown. Les droits en back s’appliquent à tous les modes de recherche en front.

Pour retirer la loupe, il faut juste ajouter du CSS à l’objet pour la masquer, mais c’est contre intuitif pour l’utilisateur (surtout dans un contexte d’accessibilité RGAA) qui ne va pas comprendre sans aide que c’est une référence recherchable uniquement par focus/input/complétion.