Explicit column selection et champs manquants

Étiquetté : , ,

  • Explicit column selection et champs manquants

    Posté par Alexandre sur 23 novembre 2022 à 19h27

    Salut a tous

    Je suis très en colère car j’ai planté 2 mises en recettes a cause du même problème : l’option d’optimisation de powerapps “explicit column selection”.

    En effet, si en dev – parfois avec du mal- je fini par avoir toutes les données dont j’ai besoin dans les ecrans suite à un filter ou un lookup, une fois publié je perd ces données qui ne remontent pas via le filter.

    Il y a bien des astuces mais c’est de l’ordre de la bidouille là où d’après moi il s’agit d’un bug de Microsoft.

    Avez vous déjà constaté le problème et comment l’avez vous contourné ? Avez vous connaissance d’un article officiel de Microsoft qui décrit le bon usage de cette fonctionnalité ?

    En attendant je vais ouvrir un ticket chez MS pour essayer d’en savoir plus et tenter de faire évoluer le truc car c’est hyper pénible.

    Merci

    PostID=Uzt2PrjPiHH58gi

    Alexandre a répondu Il y a 4 mois, 3 semaines 1 Membre · 6 Réponses
  • 6 Réponses
  • DavidZed

    Membre
    24 novembre 2022 à 9h08

    Hello,

    J’ai eu le soucis sur un projet, la solution qui m’avait parue la plus optimisée a été, pour certaines données, de les charger dans une collection.

    CommentID=L353ikYiqYHBCxm, PostID=Uzt2PrjPiHH58gi

    • Alexandre

      Membre
      24 novembre 2022 à 21h27

      C’est étrange car justement le problème me paraissait plus marqué lorsque je passe par des collections. 🙁

      SubCommentID=qdsO6og9hLrlVmD, CommentID=L353ikYiqYHBCxm, PostID=Uzt2PrjPiHH58gi

  • R3dKap

    Membre
    25 novembre 2022 à 16h03

    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

  • Alexandre

    Membre
    26 novembre 2022 à 18h22

    Nos diagnostiques se rejoignent. Et le fait d’avoir à user d’un subterfuge est à mon sens un pansement sur une jambe de bois, c’est contreproductif, et ca ne va pas dans le sens de la maintenabilité du code.

    Un truc qui serait top, serait de pouvoir ajouter une option dans les signatures des méthodes lookup et filter, qui nous permettrait d’ajouter les colonnes dont on souhaite obtenir les données. Ex.: Filter(laTable;monfiltre;'mon champ 1';'mon champ 2';...) ce qui irait dans le bon sens je pense.
    Dans l’escarcelle de mes solutions sinon je fais un truc dans le genre (en reprenant ton exemple)

     ClearCollect(colMaListe, 'Ma Liste');nWith(n    {myRecord:First(colMaListe)};n    myRecord.champ1 & myRecord.champ2 & myRecord.champ3 //& ...n)

    Ce qui ne fait absolument rien d’autre que concaténer les champs et qui donc force leur chargement.
    Mais je répète quand on code un truc un peu coton qui fonctionne et qui se met à plus fonctionner une fois publié c’est hyper pénible…
    J’aimerais aussi réussir à comprendre dans quelles conditions le chargement automatique se met à ne plus fonctionner…

    Bref, merci de vos retours, et je vais encore chercher le pourquoi du comment….

    CommentID=42qJObpKMexRQcg, PostID=Uzt2PrjPiHH58gi

  • R3dKap

    Membre
    27 novembre 2022 à 13h17

    Alexandre Perret, oui ça marchera aussi avec ta technique…

    On est bien d’accord que c’est un contournement d’un problème qui ne devrait pas exister.

    Ceci étant dit, bien que j’aie accès en tant que MVP à une liste de distribution directement connectée aux équipes de développement de Power Apps chez Microsoft, lors de l’identification d’un problème il faut impérativement leur fournir les étapes qui permettent de reproduire le souci à 100% pour qu’ils puissent l’analyser. Or dans ce cas de figure, c’est assez compliqué puisque cela semble plutôt aléatoire. Si jamais t’arrives à construire une mini-app branchée sur une bête liste SP et où tu constates ce pb de non chargement de colonnes alors c’est gagné : je peux leur transmettre et ils mettront le nez dedans…

    C’est tout ce qu’on peut faire pour l’instant…

    CommentID=ViHgiaPKfP5ZimB, PostID=Uzt2PrjPiHH58gi

    • Alexandre

      Membre
      27 novembre 2022 à 15h15

      Ca se tente 🙂
      Même si je bosse quasi exclusivement sur du dataverse, ca se tente. Si je trouve je vous en ferais part.

      SubCommentID=xpM4w51HRAsl0yQ, CommentID=ViHgiaPKfP5ZimB, PostID=Uzt2PrjPiHH58gi

Connectez-vous pour répondre.