Gérer la délégation

Étiquetté : , , ,

  • Gérer la délégation

    Posté par Shadoks_ sur 6 septembre 2023 à 15h02

    Bonjour, j’ai un cas de délégation qui ne me semble pas gérable alors je pose ma question ici.

    J’ai une collection qui est généré au “OnStart” de l’application. Elle récupère une liste SP en filtrant selon l’email de la personne connectée.

    Ensuite, j’affiche une galerie et je souhaite filtrer cette galerie selon les valeurs qui sont récupérés dans la collection.

    Par exemple je récupère un tableau de 3 enregistrements et je souhaite filtrer une colonne de ma gallerie selon les 3 valeurs distinctes d’une colonne obtenue dans ma collection?

    Est ce possible en gérant la délégation? La fonction “In” ne le permet pas !

    Merci d’avance à tous 🙂

    PostID=V2vbx9CLVuJQffX

    Shadoks_ a répondu Il y a 2 mois, 3 semaines 1 Membre · 10 Réponses
  • 10 Réponses
  • Geoffroy

    Membre
    6 septembre 2023 à 17h03

    Bonjour Shadoks_

    Peux-tu donner quelques détails supplémentaires (par exemple, les formules concernées) ?

    CommentID=FZfc3rQUOjFabQZ, PostID=V2vbx9CLVuJQffX

    • Shadoks_

      Membre
      7 septembre 2023 à 12h52

      Merci de votre aide! Tout est en dessous si vous souhaitez m’aider !

      SubCommentID=uOWMV6339vnc4Nt, CommentID=FZfc3rQUOjFabQZ, PostID=V2vbx9CLVuJQffX

  • DavidZed

    Membre
    6 septembre 2023 à 18h57

    Si tu as une alerte de délégation alors que ta source de données est une collection, n’en tiens pas compte.

    CommentID=JYM9qHyu4Kgtbuh, PostID=V2vbx9CLVuJQffX

    • ypicot

      Membre
      6 septembre 2023 à 19h35

      Bonjour

      La notion de délégation s’applique uniquement à certaines données externes (notamment SharePoint). Il n’y a donc pas de délégation pour les données en mémoire, ce qui est le cas pour les collections ou les tables en mémoire (et accessoirement les données Excel, mais c’est une autre discussion).

      SubCommentID=viwfD5oO3P9oHXR, CommentID=JYM9qHyu4Kgtbuh, PostID=V2vbx9CLVuJQffX

  • R3dKap

    Membre
    7 septembre 2023 à 8h40

    Hello Shadoks_,

    Si je comprends bien :

    • dans ton OnStart tu crées une collection en filtrant une liste SharePoint

    • sur un écran tu as une galerie branchée sur une liste SharePoint et tu souhaites filtrer les éléments de cette galerie pour n’afficher que ceux qui correspondent au contenu de ta collection à l’aide de l’opérateur “in

    Effectivement, cela te génère un avertissement de délégation : si la liste SharePoint qui alimente ta galerie a plus de 2000 éléments, tu risques fort d’avoir un filtrage incorrect car Power Apps va d’abord récupérer les 2000 premiers éléments de la liste SharePoint ET ENSUITE appliquer le filtrage basé sur ta collection (et donc il va ignorer toutes les lignes au-delà des 2000).

    Il n’y a pas de solution à ton problème tant que l’opérateur “in” n’est pas délégable (et ce n’est pas le cas aujourd’hui). Il faut donc que tu trouves le moyen de réduire le nombre d’éléments de ta galerie AVANT d’y appliquer le filtrage basé sur ta collection.

    Après, tu peux toujours utiliser cette solution de contournement, mais les perfs vont être toutes pourries (de mon point de vue c’est vraiment pas envisageable) :

    Clear(colDataGalerie);;nForAll(n    colGalerieOnStart As LoopItem;n    Collect(n        colDataGalerie;n        Filter(n            TaListeSharePoint;n            TaColonne = LoopItem.Value // Ou une autre colonne que 'Value' dans ta collection du OnStartn        )n    )n)

    Tiens-nous au jus… 😉

    CommentID=snmaEaed9bnGEe5, PostID=V2vbx9CLVuJQffX

    • Lilian

      Membre
      7 novembre 2023 à 13h01

      Bjr R3dKap et merci pour ton explication. Je voudrais tester ta solution mais je en vois pas ou je dois mettre ce morceau de code..Me concernant je rencontre le problème avec ma formule Filter(‘ADV AuRA’;

      ‘TSB_Recherche EJR/PC/ADV’.Text in ‘Référence PC/Contrat’ || Len(‘TSB_Recherche EJR/PC/ADV’.Text )=0;

      ‘TSB_Recherche STATUT’.Text in ‘Contrat : Statut’.Value || Len(‘TSB_Recherche STATUT’.Text) =0

      ) ou sont souligné en bleu le in et le ||…Si tu peux m’aider je suis preneur. Par avance merci

      SubCommentID=On6XvE7URtfJTU1, CommentID=snmaEaed9bnGEe5, PostID=V2vbx9CLVuJQffX

    • R3dKap

      Membre
      13 novembre 2023 à 23h59

      Salut Lilian,

      Une remarque de fond d’abord : que tu aies un contrôle de type text input ‘TSB_Recherche EJR/PC/ADV’ pour filtrer une colonne ‘Référence PC/Contrat’ de type texte (je suppose) -> OK.
      Mais par contre, pour filtrer sur la colonne ‘Contrat : Statut’ (qui visiblement est de type Choice), il te faut une liste déroulante contenant les différentes valeurs de statuts et non pas un champ de saisie texte. Je vais donc supposer que ton ‘TSB_Recherche STATUT’ ne soit plus un champ texte mais une liste déroulante où le Items est Choices('ADV AuRA'.'Contrat : Statut').

      Du coup, essaie de combiner le Search() et le Filter() :

      Filter(n    Search(n        'ADV AuRA'; n        TSB_Recherche.Text; n        'Référence PC/Contrat'n    ); n    IsBlank('TSB_Recherche STATUT'.Selected.Value) || 'Contrat : Statut' = 'TSB_Recherche STATUT'.Selectedn)

      SubCommentID=nkPWDqOMhXv1TUe, CommentID=snmaEaed9bnGEe5, PostID=V2vbx9CLVuJQffX

    • Lilian

      Membre
      24 novembre 2023 à 10h35

      Bonjour R3dKap et merci de ta réponse, je test dès que possible et je te dirais ce que ça donne.

      Bonne journée.

      Lilian

      SubCommentID=v4sPz07CmRxxRY3, CommentID=snmaEaed9bnGEe5, PostID=V2vbx9CLVuJQffX

  • Shadoks_

    Membre
    7 septembre 2023 à 12h51

    Hello, R3dKap et DavidZed .

    Merci pour vos réponses. En effet, tu as bien compris mon problème R3dKap .

    Etant donné que cette liste SPO sert principalement de référence pour la suite et quel n’est pas amené à changer durant l’utilisation de l’application (quelques minutes par jour), n’est-il pas possible de simplement Collect la liste SPO au début de l’application puis de l’afficher en dur dans une gallérie ? Si je reprend le message de DavidZed, si c’est une collection, je n’ai plus à me soucier du problème ?

    CommentID=OD5PnJWlzmuou2A, PostID=V2vbx9CLVuJQffX

  • Shadoks_

    Membre
    11 septembre 2023 à 12h58

    Hello, R3dKap, j’ai utilisé ta solution. Même si les performances ne sont pas incroyable, je n’ai pour l’instant pas trouvé mieux !

    Merci à tous 🙂

    CommentID=0Sj1m0ojc2bkPkf, PostID=V2vbx9CLVuJQffX

Connectez-vous pour répondre.