C’est pas un sujet simple Alexandre Perret.
Cette option étant activée par défaut, le système est censé détecter tout seul comme un grande quelles sont les colonnes utilisées par une source de données OU par une collection alimentée par une source de données afin de ne charger que les données réellement nécessaires à l’application.
Mais comme tu as pu le constater, l’intelligence qu’il y a derrière cette détection n’est pas très intelligente justement… 😩
Alors, surtout -> ne jamais désactiver cette option sous peine de voir les perfs de ton application chuter… pire que DRASTIQUEMENT… j’ai pas de mots… ça chute bien quoi… 😁
Je suis passé par différentes techniques pour contourner ce problème (qui de mon avis n’est pas près d’être solutionné nativement), dont celle de faire un ShowColumns() pour cibler les colonnes concernées ce qui force leur chargement. Mais l’inconvénient que je lui trouve c’est que du coup les colonnes ressortent avec leur nom interne plutôt que leur nom d’affichage qui devient alors inconnu du système -> relou, faut changer tous les noms de colonnes dans le code.
La dernière technique que j’utilise actuellement (et que je n’utilise QUE lorsque je vois que certaines colonnes ne sont pas chargées) c’est celle-ci :
ClearCollect(colMaListe, 'Ma Liste');nUpdateContext(n {n locMaListeCol1: First(colMaListe).Colonne1,n locMaListeCol2: First(colMaListe).Colonne2,n locMaListeCol3: First(colMaListe).Colonne3,n ...n }n)
Le fait d’accéder aux colonnes juste après le ClearCollect() indique clairement au système qu’elles sont utilisées et du coup elles sont chargées.
Voilà… Dis-moi si de ton côté ça résouds ton pb…
En regardant le code, je me dis qu’on peut peut-être optimiser ainsi (mais j’ai pas testé) :
ClearCollect(colMaListe, 'Ma Liste');nUpdateContext({locMaListeFirst: First(colMaListe)});nUpdateContext(n {n locMaListeCol1: colMaListeFirst.Colonne1,n locMaListeCol2: colMaListeFirst.Colonne2,n locMaListeCol3: colMaListeFirst.Colonne3,n ...n }n)
CommentID=t8rdPExF2E0Ofwh, PostID=Uzt2PrjPiHH58gi