Merci de ta réponse rapide, cela ne fonctionne pas non plus, j’ai toujours visible = 0 dans les metadata.
Aussi, le search passe après le getMetadata, je ne sais pas si ça change quelque chose ?
Bizarre les tests fonctionnaient. On va en refaire, il y a peut être un truc qui a changé depuis.
C’est un objet normal ?
pas un objet select ou service ?
group-by fields ?
Au premier usage d’un objet (nom d’instance), le call metadata est demandé par le front pour récupérer la définition de l’objet et ses ressources (contraintes, script, class, styles…). Ce call n’est plus sensé se produire ensuite, enfin tant que l’instance d’objet est en cache front.
Ensuite, chaque search ramène les données et les métadata par ligne et globalement.
Le displayList utilise le obj.metadata global + displayRow les meta de chaque ligne obj.list[i].meta en surcharge des globales.
Il faudrait regarder le contenu des meta reçues au niveau du call search lui-même.
Suite à des tests en pas-à-pas, lors de l’export des meta-data, il y a des hook/contraintes qui sont appelées avec différents contextes.
Notamment le isCreateEnable : la contrainte s’exécute car la condition est true sans contexte, et le champ “Phone” repasse en masqué puisque le nom est vide.
En ajoutant à la suite de la 1ere contrainte, une autre contrainte en condition [CONTEXT:CREATE] pour mettre le Phone en visible en création, ça fonctionne.
Par contre, ce n’est pas normal que la contrainte impactant un Field s’exécute alors que le test concerne la propriété de création de l’objet. C’est comme ça depuis l’origine, mais ça me semble plutôt être un bug.
Je pense que la création d’une 2ème contrainte est la solution proposée ici, effectivement ça fonctionnait chez moi, mais ça m’oblige à dupliquer toutes mes contraintes (j’en ai vraiment beaucoup )
Y aurait-il moyen de modifier l’expression de la contrainte pour que le isCreateEnable ne s’exécute pas ? Ou faire quelque chose dans le hook en lui-même ?
On va corriger pour ne pas appliquer les impacts Field/Target pour savoir si l’objet peut être créé dans les métadata = tous les flags issus des contraintes/isXXXEnable : metadata.create|copy|update|delete
checkCreateConstraints appelle ObjectDB.checkObjectPropConstraints dans un contexte de creation mais il avait des impacts trop larges, il ne doit agir/exécuter que les contraintes impactant les propriétés de l’objet.
On s’en sert très rarement car ce fonctionnement/bug date d’avant la V4…
Ce sera corrigé 6.3.8.