DavidZed
MembreRéponses céées sur le Forum
-
DavidZed
Membre16 février 2024 à 10h46 en réponse à: Message dans bandeau “Une erreur est survenue”Hello,
Si lbl_Qté et lbl_PrixU sont des contrôles : labelText, textinput,
Il vaut mieux éviter, quand c’est posible, de faire des calculs sur des contrôles qui peuvent contenir du texte, ou alors il faut effectivement convertir leur text en décimal avec Value(), mais plutôt sous cette forme :
Value(lbl_Qté .Text) * Value(lbl_PrixU.Text)
Si c’est un textinput, l’idéal est de le mettre en formatType.Numbers, (ce qui est également plus pratique pour la saisie sur mobile)
La chose à éviter, si lbl_Qté et lbl_PrixU sont des labelText, c’est de spécifier arbitrairement le spéarateur décimal : si l’utilisateur n’a pas la même langue sur son navigateur, il y aura des erreurs, là où toi tu n’auras aucune alerte
-
Hello,
Quand je fais une app de contrôle des stockes, je part généralement sur 3 listes :
- Références produit
- Lots
Colonnes- Produit( (Lookup)
- Quantité initiale (entier)
- Quantité actuelle entier)
- Mouvements
Colonnes :- Produit( (Lookup)
- Lot (Lookup)
- Quantité (entier positif = ajout, négatif = retrait)
Je fais un flux Power automate qui se déclenche à la création d’un mouvement :
- Récupération du lot et de tous les mouvements associés
- Calcul des quantités : Quantité initiale du lot + Somme de toutes les quantités des mouvement, pour ce faire, j’utilise la méthode avec Xpath : Power Automate : Somme (Optimisée) d’une table de valeurs – Base de connaissances – PPFC
- Mise à jour de la quantité calculée pour le lot
Si j’ai besoin de calculer les quantités par référence produit, je fais un flux similaire qui va faire la somme de toutes les quantités actuelles des lots associés au produit.
Si tu as besoin de faire la somme dans ton appli, tu peux utiliser la fonction Sum() couplée à un Filter() :
Sum(
Filter(Lots ; Produit.Title = “Perlinpinpin” ) ; ‘Quantité actuelle’
) -
Hello,
voici un exemple sur un application d’inspection que j’ai developpé :
Il s’agit d’un contrôle image qui va afficher un coche si l’enregistrement contient une réponse et un cercle vide rouge si la réponse n’a pas encore été saisie, j’ai donc mis dans ma propriété image :
// Si cette réponse est vide, affiche l’image cercle, sinon affiche l’image coche
If(IsBlank(ThisItem.Réponse) ; ImageCercle ; ImageCoche)Tu peux utiliser la même formule en ajoutant un objet de fond dans ta galerie, un rectangle ou un container vide et mettre une condition similaire sur sa propriété .Fill (Remplissage) , mais cette fois-ci mettant une couleur ou une autre selon le résultat du test :
// Si cette réponse est vide, couleur rouge, sinon couleur verte
If( IsBlank(ThisItem.Réponse) ; Color.LightCoral ; Color.YellowGreen )ce qui devrait donner (exemple avec un container en fond de galerie ) :
Sur cet autre exemple, j’ai, dans ma source de donnée, une colonne de type choix, qui peut avoir plusieurs valeurs :
Pour faire varier la couleur du badge en fonction de la valeur de ce champ que j’ai nommé “Progression”, j’utilise une fonciton switch:
// Pour chaque cas, on détermine une valeur de couleur (dans une variable)
Switch(
ThisItem.Progression;
ch_CL_Progression.’Non démarré’;
fColors.Accent3;
ch_CL_Progression.’En cours’;
fColors.Accent1;
ch_CL_Progression.Terminé;
fColors.Good;
ch_CL_Progression.Annulé;
fColors.Error
) -
DavidZed
Membre15 février 2024 à 12h17 en réponse à: Variable pour automatiser certaines mises en formeHello,
Quelques suggestions :
Il vaut mieux mettre le Set() de ce genre dans variable dans la propriété OnStart de l’application : Ainsi tu n’auras pas à déplacer ton code si jamais tu décides de changer d’écran d’accueil.
Encore mieux, étant donné que ce genre de variable a une valeur qui n’est pas amenée à évoluer, tu peux utiliser la propriété formulas (toujours dans l’objet App), la syntaxe serait légèrement différente:
// Préfixe nf_ pour différencier les named formulas des variables
nf_TextInputSize = 11 ;;
nf_TextLabelSize = 12 ;;Enfin, pour organiser et “ranger” tes variables et formules nommées, tu peux utiliser des valeurs de type “enregistrement” qui te permettront d’appeller plusieurs valeurs depuis un seul élément.
Version variable globale :
Set(varSizes, {
TexInput : 11;
TextLabel : 12;
Border : 2
} )Version formulas :
Version variable globale :nf_Sizes = {
TexInput : 11;
TextLabel : 12;
Border : 2
} ) ;;Tu pourras ensuite appeler ces valeurs dans l’application avec varSizes.TextInput , varSizes.Border etc etc…
-
DavidZed
Membre14 février 2024 à 21h54 en réponse à: Prendre des items d’un liste sharepoint puis créer un csvA noter qu’avec une licence Power Automate par utilisateur la limite passe de 5000 à 100 000
Limites des flux automatisés, planifiés et instantanés – Power Automate | Microsoft Learn
-
DavidZed
Membre14 février 2024 à 21h46 en réponse à: Prendre des items d’un liste sharepoint puis créer un csvBonjour,
C’est une limitation : 5000 éléments maximum par boucle.
Si tu dois traiter plus de lignes, il faut bricoler une boucle “répéter jusqu’à” :
Il te faudra 2 variables, une de type array (Appellons la vLignes) pour “stocker” les lignes, une de type integer (vLastId valeur initiale 0) pour stocker le dernier ID
Dans cette boucle appliquer à chacun :
- Mettre un obtenir les élements SP avec :
- Filtre Odata sur ID gt vLastId
- Mettre 5000 dans le nombre de lignes à récupérer
- Ajouter un Select et mettre toutes les colonnes à récupérer dans le CSV
- Mettre un ajouter à une variable de tableau vLignes : Chaque ligne du Select précédent
- Après la boucle appliquer à chacun, mettre un définir une variable vLastId : Last( ID du Select)
- Mettre en condition de sortie de la boucle executer jusq=’à : Lenght ( Items de obtenir les éléments SP) <> 5000
Cette boucle devrait se répéter tant que l’action obtenir les éléments remonte 5000 lignes, à partir du moment où elle remontera 4999 lignes ou moins ce sera la dernière itération et le flux continuera vers l’action suivante.
Pour la 2eme erreur, il semble que tu as trop de donnés pour ton action de génération de CSV, utilise un select comme plus haut ou spécifie les colonnes mannuellement, surtout si tu as des colonnes de type image ou fichier
- Mettre un obtenir les élements SP avec :
-
DavidZed
Membre9 février 2024 à 16h49 en réponse à: remplir un power point avec datavers power plateform ?Bonjour,
Ce n’est pas possible avec les actions et connecteurs standard, il existe cependant un connecteur ‘third party’ payant qui semble pouvoir le faire: Plumsail : How to populate PowerPoint PPTX presentations with data from your system using Power Automate Flow or Zapier — Plumsail Documents Documentation
plumsail.com
Create PowerPoint presentations automatically from your web services and CRM systems using Plumsail Documents in Power Automate and Zapier.
-
Hello, pour pouvoir identifier les lignes à supprimer, la colonne que tu désigne comme clé / key doit comporter des valeurs uniques.
Si tu te sers d’une colonne avec des dates, dont plusieurs lignes ont la même valeur, la boucle se fera sur la même ligne car il va s’arrêter à la première valeur qui correspond
-
DavidZed
Membre8 février 2024 à 10h47 en réponse à: Envoie de donnée dans un fichier avec un nom dynamiqueNon, encore une fois, chercher a gérer dynamiquement des sources de données de manière dynamique et en fonction du besoin c’est aller droit dans une impasse.
SharePoint te permet de créer des Bibliothèques (pour enregistrer des fichiers), mais également des listes, une liste fonctionne comme une base de données avec des colonnes auxquelles ont attribue un type de données, dans cette liste on peut ajouter des enregistrements (des lignes).
Tu peux utiliser cette liste comme source de données avec Power Apps, c’est d’ailleurs plus efficient qu’utiliser un fichier Excel comme source de données.
Tu peux créer un flux power automate pour extraire des enregistrements de cette liste pour alimenter un fichier excel ( ex un flux qui extrait toutes le lignes dont la date est celle du jour dans un fichier excel et copie ce fichier avec un nouveau nom dans un emplacement OneDrive ou dans une bibliothèque SharePoint.
-
DavidZed
Membre7 février 2024 à 18h06 en réponse à: Envoie de donnée dans un fichier avec un nom dynamiqueBonjour,
Non c’est impossible de gérer des sources de données à la volée et de manière dynamique.
Si tu dois alimenter des fichiers différents, je te suggère plutôt de fonctionner avec une liste sharepoint comme source de données de l’appli et d’avoir un flux power automate qui va générer les fichiers excel journaliers en filtrant les données de la liste SP.
-
Essaies cette approche :
Dans Button.OnSelect :
UpdateContext({vctxIndex:If(vctxIndex>=Gallery6_2.AllItemsCount,1,vctxIndex+1)}) ; Select(Gallery6_2)
Dans le Gallery.Default :
Index(Self.AllItems,vctxIndex)
-
Je ne comprends pas trop ce que tu essaies de faire, mais une chose est sûre, on ne peut pas utiliser Select() pour activer un évènement OnSelect d’un contrôle dans une galerie depuis l’extérieur de celle-ci.
Si tu veux que ton bouton à l’exterieur de la galerie fasse la même chose qu’un clic sur ton image, prends le code dans son OnSelect et remplace ThisItem. par galListData.Selected.
Si tu veux changer l’item de ta glaerie sélectionner, tu peux agir sur la propriété DefaultSelected, avec par exemple la formule Index(‘Source de données’, variable) et en faisant évoluer la variable pour sélectionner l’item souhaité.
Tu essaies de faire un carroussel d’images ? Si tel est le cas la galerie n’est peutêtre pas le contrôle idéal
-
DavidZed
Membre7 février 2024 à 8h28 en réponse à: Erreur : cliquer sur un bouton pour changer valeur dans une table et sur le formBonjour,
Les valeurs de type Choice / Option Dataverse sont sous la forme :
‘Nom de la choice list’.’Valeur du choix’, si tu as créé des listes de choix réutilisables
‘Nom du champ (Table)’.’Valeur du choix’ , si tu as dédié ta choice liste à ce champ exclusivement
Ton Patch devrait ressembler à :
Patch(GLead;GalleryLead.Selected;{StatutLead : ‘Choix Statut Lead’.Qualifié})
ou dans le 2eme cas :
Patch(GLead;GalleryLead.Selected;{StatutLead : ‘StatutLead (Glead)’.Qualifié})
-
DavidZed
Membre31 janvier 2024 à 17h59 en réponse à: Noms de colonnes ne correspond plus après déploiementHello,
Celà vient des displaynames, avec les sources SP dans des variables d’environnement, il ne faut pas chercher à comprendre : les listes doivent être ISO sur :
- Les logical names
- Les displayname
- les types de données
- le nombre de colonne
Quand tu déploies en PROD, l’app packagée recherche bien les logical names de tes colonnes, seulement, si tu ouvres l’App dans l’éditeur, lui va rechercher les logical names d’après les display names, d’où tes erreurs.
La seule alternative serait d’appeller les données systèmatiquement au travers d’un ShowColumn() qui zapper les displaynames pour n’afficher que les logical names des colonnes.
Développer avec les logical names uniquement serait plus simple, mais pas d’un point de vue low code malheureusement 🙁
-
Alors il faut regarder à chaque endroit ou tu as un collect() ou clearcollect() qui alimente ta collection et rechercher ce qui pourrait altérer son schéma de données par rapport à la source, et plus particulièrement :
- La présence de formules de type : AddColumns, ShowColumns, DropColumns, GroupBy, UnGroup
- Le collect d’item directement depuis une galerie ou un formulaire > Passer par un lookup()
- Le collect d’item avec une nouvelle colonne dans la partie { updates }
- Le collect d’item avec type de donnée différent de celui attendu