
Gérer la délégation
Tagged: delegation, galerie, In, powerapps
Gérer la délégation
Posté par Shadoks_ sur 6 septembre 2023 at 15h02Bonjour, 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 1 year, 5 months ago 1 Membre · 10 Réponses- 10 Réponses
Bonjour Shadoks_
Peux-tu donner quelques détails supplémentaires (par exemple, les formules concernées) ?
CommentID=FZfc3rQUOjFabQZ, PostID=V2vbx9CLVuJQffX
Merci de votre aide! Tout est en dessous si vous souhaitez m’aider !
SubCommentID=uOWMV6339vnc4Nt, CommentID=FZfc3rQUOjFabQZ, PostID=V2vbx9CLVuJQffX
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
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
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
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
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 estChoices('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
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
Connectez-vous pour répondre.