

Guillaume
MemberForum Replies Created
Guillaume
Member2 mai 2022 at 18h20 en réponse à: "Get Items" vs "Send HTTP request to sharepoint" ?Bonjour @JLF,
Les 2 méthodes fonctionnent très bien et sont tout à fait adaptées.
Avec, il est vrai, pour l’action Update Item de Power Automate, l’obligation de remettre les valeurs pour les champs obligatoires. Les valeurs laissées vides ne seront pas mise à jour.
CommentID=S277IzJ4QItdip7, PostID=iyC6YuEdWQiyQst
Bonjour @JLF,
Malheureusement, c’est le fonctionnement de la fonction Select(), l’action est enregistrée dans une file d’attente pour une exécution non immédiate et dont il n’est pas possible de récupérer le retour d’exécution.
Tu peux éventuellement déplacer tes appels aux boutons dans chacun des boutons qui exécute le code précédent.
A la fin du OnSelect() sur le bouton action_Refresh_1, Select(action_RECORD_num_1)
A la fin du OnSelect() sur le bouton action_RECORD_num_1, Select(action_colTICKET_get_1)
Ainsi de suite…Cela conserve ton découpage du code dans plusieurs formules OnSelect(), qui peut être plus lisible, mais attention de bien commenter le fonctionnement pour que se soit facilement compréhensible pour les autres citizen dev qui viendraient contribuer sur ton application.
CommentID=Ir6eB2cvgTuBmQT, PostID=QwgjeaKmdvRNPuH
Tu peux lire également ce post de @R3dKap qui explique très bien les différentes possibilités de création des fonctions réutilisables : https://ppfc.fr/ressources/post/creer-des-fonctions-reutilisables-dans-power-apps-8UBo6bCvAyjlac5
SubCommentID=nQ25kkx3SvtwrbD, CommentID=Ir6eB2cvgTuBmQT, PostID=QwgjeaKmdvRNPuH
Bonjour @JLF,
C’est une pratique courante pour la réutilisabilité du code, on écrit le code sur le OnSelect d’un bouton, pour qu’il puisse n’être écrit qu’une fois et être appelé de plusieurs endroits.
Il est également possible d’utiliser les composants et la fonctionnalité expérimentale des paramètres de propriété pour les composants.
Tu peux jeter un oeil sur cette vidéo qui explique comment tout cela fonctionne (les sous titres traduits en français sont compréhensibles 😉)Dans ton cas, je ne crois pas que cela soit adapté (tu me diras si je me trompe), et je ne vois pas d’autres moyens pour réduire la longueur et améliorer la lisibilité de ton code.
SubCommentID=fbMvTsDF34MgR5B, CommentID=Ir6eB2cvgTuBmQT, PostID=QwgjeaKmdvRNPuH
Bonjour @Andre,
Sur la propriété Items de ta galerie, tu peux utiliser la fonction Filter() et appliquer la condition suivante :
Filter(maSource;Statut <> "Draft")
CommentID=5yr7a3rnhmU9oNo, PostID=4pwHSy8V1PJxH6b
Bonjour @Romain,
Dans les informations affichées dans ta galerie, attention à la résolution et au poids des images. Quelle est leur taille en moyenne?
Si elles sont de plusieurs Mo, cela peut ralentir l’affichage de ta galerie.
Pour en constater l’impact, fais des tests en retirant cette information. Si c’est beaucoup plus fluide, il faudra trouver une solution pour réduire leur taille.Pour limiter le nombre d’éléments dans ta galerie, tu peux en effet appliquer un filtre, fixe (écris en dur dans la formule) ou dynamique (avec des champs de saisie utilisateur), pour ne pas remonter tous les éléments. Tu as environ 1800 éléments dans ta liste SharePoint, mais sache que Power Apps ne remonte que les 500 premiers (sauf si tu as modifié cette limite dans les paramètres de l’application, pour monter jusqu’à 2000).
Tu peux par exemple n’afficher que les éléments les plus récents (filtre par rapport à la date de dernière modification inférieure à 30 jours) ou n’afficher que les éléments “En cours” (filtre sur le statut de l’élément).
Je t’invite à découvrir le fonctionnement de la fonction Filter() via ce lien :Pour préciser ma remarque sur les caractéristiques du périphérique, je parle des composants physiques de celui-ci (processeur, mémoire…).
CommentID=Pv4hIxHquIZc6KD, PostID=IOp0kB0eMCgaeS6
Guillaume
Member27 avril 2022 at 14h25 en réponse à: Ajouter Date à un fichier à enregistrer dans SharepointBonjour @CedZ,
Tu peux utiliser la fonction formatDateTime(), qui prend en paramètre le timestamp et le format de sortie
Exemple :
formatDateTime(utcNow(),'yyyyMMdd_HHmmss')
Tu obtiendras 20220427_163045
Comment récupères-tu la date de réception des mails dans ton flux ?Quel format souhaites tu obtenir en sortie ?
Et est-ce qu’il y a une autre information que tu souhaites ajouter dans le nom du fichier ?
CommentID=jxRuPB4JPA0ZS1n, PostID=xHrm8tAVkTF2dfY
Guillaume
Member27 avril 2022 at 14h46 en réponse à: Ajouter Date à un fichier à enregistrer dans SharepointSupposant que ton flux soit déclenché à l’arrivé d’un nouvel email, la date de réception de celui-ci est récupérable dans le contenu dynamique des actions suivantes dans le flux
La formule de formattage de la date serait alors
formatDateTime(triggerOutputs()?['body/receivedDateTime'],'yyyyMMdd_HHmmss')
SubCommentID=pUSOTjQDaDOjT2m, CommentID=jxRuPB4JPA0ZS1n, PostID=xHrm8tAVkTF2dfY
Guillaume
Member27 avril 2022 at 14h04 en réponse à: Power apps enregistre des données vide dans sharepointBonjour @Yannick,
Peux-tu nous donner un peu plus d’indications sur ton contexte d’utilisation :
Comment est fait ton enregistrement dans SharePoint ? Est-ce que tu peux nous envoyer la formule ?
Quelles informations sont vides dans SharePoint ? L’enregistrement complet (tous les champs sont vides), ou des champs en particulier ?
CommentID=r8FBtdtctJbcyrH, PostID=2bfyc58DmLG22CM
Bonjour @Xavier NOEL-BRIAND,
Il y a une petite modification à faire, pour la récupération des événements du calendrier.
Le code est fait de manière à récupérer le calendrier de l’utilisateur appelé “Calendar”.
Si ton contexte d’utilisation est en français, il faut remplacer le texte par “Calendrier”, dans la propriété OnStart de l’application, sur la ligne suivanteSet(_myCalendarID; LookUp(Office365.CalendarGetTables().value; DisplayName = "Calendar").Name);
Il y a une autre modification à faire, toujours sur la propriété OnStart de l’application, sur la ligne de récupération des futurs événements
ClearCollect(FutureCalendarEvents; Office365.GetEventsCalendarViewV2(_myCalendarID; Text(Now(); UTC); Text(DateAdd(Now(); 90; Days))).value);
Il faut ajouter, sur la deuxième fonction de convertion de date en texte, le format UTC pour éviter les problèmes de format de dates FR/EN
ClearCollect(FutureCalendarEvents; Office365.GetEventsCalendarViewV2(_myCalendarID; Text(Now(); UTC); Text(DateAdd(Now(); 90; Days);UTC)).value);
CommentID=zQ2QAOx93uUCcNX, PostID=L27cWMtmjeHKb8a
Bonjour @Romain,
Quelle est la source des données affichées dans la gallerie ?
Combien d’éléments contient-elle ? Et combien d’informations affiches-tu pour chacun des éléments? Y a-t-il des images… ?Ton application est lente de manière globale, ou est-ce vraiment sur cet écran en particulier ?
Les lenteurs peuvent en effet provenir de la connexion, dans ce cas voir pour charger et travailler avec les données en local, ou de la quantité d’informations affichées sur les écrans, dans ce cas je te conseille de réduire le volume en filtrant ta gallerie ou en affichant moins d’informations. Les caractéristiques du périphérique utilisé peuvent aussi avoir un impact sur la latence d’affichage.
CommentID=NSdvt4iAcimKM7v, PostID=IOp0kB0eMCgaeS6
Bonjour @anthony,
Il faudra une (ou plusieurs) licence Power Apps/Power Automate (selon ton cas d’utilisation) pour utiliser ton connecteur personnalisé.
Les flux et les applications où tu l’utiliseras seront considérés comme Premium et ne pourront donc pas être exécutés avec un compte ne disposant que d’une licence M365 (E3, E5…).
CommentID=6RWB3hHq8ow74F2, PostID=YXSz5y3E9r8GpPb
Bonjour @Andre,
On veut filtrer les articles contenus dans la collection Catalogue
On souhaite appliquer la condition suivante pour le filtre :
– Le vendeur est égal au vendeur sélectionné dans la liste déroulante
OU
– Le nom de l’article contient le texte saisi dans le champ de rechercheLa fonction Filter() va tester chaque élément contenu dans la collection Catalogue, en fonction de la condition que l’on va appliquer dans le second paramètre de la fonction.
Ce second paramètre doit renvoyer la valeur true ou false pour indiquer si l’élément en question doit être affiché dans la galerie.Si je reprends ta formule :
Filter(ntCatalogue;ntOr(nttIf(ntttIsBlank(ChoixVendeur.Selected.'Compte vendeur');ntttCatalogue;nttt'Compte vendeur' = ChoixVendeur.Selected.'Compte vendeur'ntt);nttIf(ntttIsBlank(ChoixProduit.Text in 'Nom produit');ntttCatalogue;ntttChoixProduit.Text in 'Nom produit'ntt)nt)n)
Première condition :
If(n IsBlank(ChoixVendeur.Selected.'Compte vendeur');ntCatalogue;nt'Compte vendeur' = ChoixVendeur.Selected.'Compte vendeur'n);
Ici ta condition se traduit par :
– si la propriété ‘Compte vendeur’ pour la valeur sélectionnée dans la liste déroulante est Vide,
– alors je renvoie ma collection complète d’article contenue dans mon catalogue,
– sinon je vérifie si la propriété ‘Compte vendeur’ de l’article est égale à la propriété ‘Compte vendeur’ de la valeur sélectionnée dans la liste déroulanteIl faut modifier la condition pour renvoyer true ou false, et pas la collection complète des produits du catalogue.
Seconde condition :
If(n IsBlank(ChoixProduit.Text in 'Nom produit');n Catalogue;n ChoixProduit.Text in 'Nom produit'n)
Ici ta condition se traduit par :
– si le texte saisi dans le champ de recherche est contenu dans le nom du produit est Vide,
– alors je renvoie ma collection complète d’article contenue dans mon catalogue,
– sinon je vérifie si le texte saisi dans le champ de recherche est contenu dans le nom du produitMême chose que pour la première condition, il faut modifier la condition pour renvoyer true ou false, et pas la collection complète des produits du catalogue.
De plus, la conditon IsBlank() n’est pas bien implémentée, elle doit uniquement vérifier si le champ texte de recherche est Vide.Je te propose d’essayer la formule suivante :
Filter(n Catalogue;n If(nAnd(IsBlank(ChoixProduit.Text);IsBlank(ChoixVendeur.Selected.Value));ntttrue;n Or(n If(!IsBlank(ChoixProduit.Text);StartsWith('Nom produit'; ChoixProduit.Text);false);n ChoixVendeur.Selected.Value = 'Compte vendeur'n );n )n)
Je fais d’abord une première condition pour tester s’il n’y a aucun texte saisi dans le champ de recheche du produit ET si la liste déroulante de sélection du vendeur est vide.
Je renvoie true dans ce cas pour remonter tous les éléments, car aucun filtre n’est appliqué.Je fais ensuite une condition Or pour tester les 2 champs de recherche.
Le premier, si une valeur est saisie dans le champ texte, je vérifie si celle-ci est contenue dans le nom du produit.
Le second, si la valeur sélectionnée dans la liste déroulante du vendeur est égale à la propriété ‘Compte vendeur’ du produit.
Si l’une des conditions est vraie, le produit sera affiché dans la galerie.CommentID=5g8CvlBoYxNbjFe, PostID=u56z954yDLlkYZy
Bonjour @Andre ,
Si tes champs sont des champs texte, tu peux utiliser cette formule :
Filter(n Catalogue;n txtProduit.Text in Produit;n txtVendeur.Text in Vendeurn)
J’utilise ici l’opérateur “in” qui permet de rechercher le texte saisi par l’utilisateur n’importe où dans le nom du produit et du vendeur, mais tu peux aussi utiliser la fonction StartsWith() pour ne rechercher que les produits et les vendeurs qui commencent par le texte saisi :
Filter(n Catalogue;n StartsWith(Produit; txtProduit.Text);n StartsWith(Vendeur; txtVendeur.Text)n)
Comme l’expliquait @Alain, le “;” entre les conditions applique l’opérateur ET. Si tu souhaites appliquer un OU entre les conditions, tu peux utiliser la fonction OR comme ceci :
Filter(n Catalogue;n If(nOr(!IsBlank(txtArticle.Text);!IsBlank(txtVendeur.Text));n Or(nIf(!IsBlank(txtArticle.Text);StartsWith(article; txtArticle.Text);false);nIf(!IsBlank(txtVendeur.Text);StartsWith(vendeur; txtVendeur.Text);false)n );n truen )n)
Attention toutefois sur l’utilisation des opérateurs (in, StartsWith…) pour filtrer ta source de données, cela peut engendrer des problèmes de délégation.
De quel type est ta source de données ? Et combien d’enregistrements peut-elle atteindre ?CommentID=VkbCzDCIv1c0cF9, PostID=u56z954yDLlkYZy
Bonjour Xavier,
C’est malheureusement une limitation, le Bot flow ne peut pas accéder à la conversation d’un canal privé.
En attendant que cela puisse être possible, il faut utiliser l’option “Publier en tant qu’utilisateur”, et éventuellement utiliser un compte générique pour la connexion à Teams, si c’est l’envoi du message au nom du créateur du flow qui pose problème.
CommentID=WzatwOgyoUMVT34, PostID=SQVxzyWJgPD1GvW