R3dKap
Expert Power AppsRéponses céées sur le Forum
-
Ok, donc si j’ai bien compris, sur ta capture où on voit les 2 fichiers Excel, l’idée c’est :
-
je balaye le fichier de droite
-
pour chaque ligne je recherche dans le fichier de gauche l’élément correspondant en me basant sur son ID
-
je mets à jour le statut de l’élément dans le fichier de gauche avec le statut de l’élément du fichier de droite
C’est bien ça ?
CommentID=aZML9jNwm1EUVI9, PostID=CCWAcEm9qqnSWF3
-
-
R3dKap
Membre6 avril 2022 à 21h41 en réponse à: Attachment Control pour envoyer des fichiers par e-mailSalut @Christelle,
Tu es obligée de passer par un flux Power Automate. En effet, le contenu des pièces jointes d’un élément de liste SharePoint n’est pas disponible directement depuis Power Apps. Le contrôle Attachments ne possède le contenu que des pièces jointes que tu viens juste d’ajouter (AVANT la soumission du formulaire). Une fois le formulaire soumis, tu le perds.
Donc, il te faut créer un flux Power Automate auquel tu vas transmettre l’ID de l’élément, le contenu du mail, puis dans le flux tu vas chercher les pièces jointes de l’élément en question pour les mettre en attachement du mail envoyé.
Si tu as besoin d’aide là-dessus n’hésite pas. Mais tu verras c’est plutôt simple…
CommentID=wePes9lDRDSC9fK, PostID=niLTqJtPYMT76NM
-
-
Pourquoi 1 bib/région n’était pas intéressant du point de vue parcours utilisateur ?
-
Pourquoi y’aurait un pb de perfs à cause des fichiers extraits ? C’est jute un flag sur le fichier…
De mon point de vue, le vrai pb de perfs c’est d’avoir une seule bib. avec des droits cassés au niveau des dossiers… Mais ça mériterait débat…
CommentID=gEaaPpc8Su6PjMZ, PostID=aRhSNjRlGrFMcLU
-
-
Et donc je viens de faire un flux tout simple qui se déclenche à la modification d’un élément de liste : il récupère les pièces jointes et les enregistrent dans la bibliothèque de documents par défaut -> AUCUNE BOUCLE INFINIE.
Ca marche très bien. Donc il doit y avoir autre chose de ton côté qui provoque le pb. On peut peut-être se faire une p’tite visio Teams vendredi dans l’après-midi si tu veux…
CommentID=1ZWNfAvItGFAtGr, PostID=P3kqhLcGFmuRQzy
-
Petite correction sur ma réponse d’avant : il faudra quand même un dossier par élément pour éviter les doublons de noms de fichiers…
CommentID=vKkcBVuHUK2tNqU, PostID=P3kqhLcGFmuRQzy
-
Ah et pour ce qui est de l’erreur que tu as régulièrement, sauf erreur de ma part, c’est parce-que l’action de création du dossier déclenche une erreur si le dossier existe déjà. Donc c’est à toi de modifier la Condition d’exécution après pour l’action qui suit afin que le flux poursuive son exécution même s’il y a une erreur à la création du dossier :
CommentID=Fg5MUOyzsUVFqD6, PostID=P3kqhLcGFmuRQzy
-
@philippe un grand merci pour ces réponses hyper détaillées qui me permettent d’avoir une bonne vision sur ton besoin.
Il me semble que la clé de ton problème se situe dans cette phrase :
Je sens que la solution de la pièce jointe ne vous convient pas, qu’elle n’est pas idéale car consulter les pièces jointes oblige à aller sur l’élément de la liste, afficher son panel d’infos, dérouler le formulaire jusqu’en bas et (enfin) cliquer sur la pièce jointe.
Moi aussi je déteste cette expérience…
C’est la raison pour laquelle je ne mets jamais les documents en pièce jointe de mes éléments de liste. A la place, je crée une bibliothèque de documents dédiées dans laquelle j’ajoute une colonne de recherche vers ma liste. Ainsi, tout document ajouté dans la bibliothèque est “lié” à un élément de la liste.
Evidemment, cela implique que :-
Soit on customise le formulaire SharePoint pour faire en sorte que les pièces jointes ajoutées à un élément ne soient non pas stockées en tant que pièces jointes de l’élément mais plutôt stockées dans la bibliothèque et liées à l’élément en question.
-
Soit on crée une petite application Power Apps (de scratch ou générée à partir de la liste SharePoint) et on la modifie pour que, comme pour le point 1, les pièces jointes ajoutées à un élément soient plutôt stockées dans la bibliothèque.
Du coup, plus de flux qui doit gérer les pièces jointes. Les justificatifs sont tous dans la même bibliothèque et ils sont consultés en passant par l’application (on ne va jamais manuellement dans la bibliothèque via SharePoint -> pas très pratique).
Par contre, faudra juste un flux pour que les documents ajoutés à l’élément via l’application soient bien enregistrés dans la bibliothèque plutôt que en pièce jointe de l’élément.
Est-ce que tu me suis ?
Maintenant si tu veux rester sur la solution actuelle, étant donné que les pièces jointes peuvent être (et sont souvent) ajoutées APRES la création de l’élément, la solution que l’on a mise en place n’est pas adaptée.
Mais j’en reviens à la question initiale : comment se fait-il que le simple fait de lire une pièce jointe d’un élément modifie l’élément lui-même ? Puisqu’il faut bien que l’élément soit REmodifié à l’intérieur du flux pour qu’il déclenche cette boucle infinie…
Je vais faire 2 ou 3 tests là-dessus et je reviens vers toi…CommentID=wu11L7gurwZl8Nf, PostID=P3kqhLcGFmuRQzy
-
-
Ah oui si tu es pressée par le temps, ça risque d’être compliqué… Est-ce que tu as encore besoin d’aide du coup ?
CommentID=tZyMoExJwy81j1w, PostID=CCWAcEm9qqnSWF3
-
@Charly est-ce que tu peux préciser “en un clic” ?
L’idée c’est de cliquer sur un bouton et ça insère dans le PDF un horodatage et un nom/prénom ?
Après il y a aussi la possibilité d’utiliser le contrôle Pen Input (Entrée du Stylo en français) pour dessiner une signature au doigt sur un écran tactile et insérer la photo de la signature directement dans le PDF…
CommentID=nkPQ3Nty1kTtZCL, PostID=YePgib7ehLsHTTs
-
Suis pas sûr de bien comprendre… Si je récapitule…
Ta bibliothèque principale :
-
y’a 5000 lecteurs
-
y’a 50 contributeurs (de différentes régions)
-
y’a un dossier par région ? ou alors une colonne Région pour que les lecteurs puissent retrouver le document d’une région ou la notion de région n’a pas d’importance ?
-
est-ce que dans la même bibliothèque il y a un mélange de documents accessibles à tous et d’autres documents confidentiels avec un accès restreint ?
-
j’ai compris que tu as créé une vue Mes documents qui n’affiche que les document du user connecté
-
j’ai pas compris le coup du JSON : c’est une colonne customisée ou c’es vraiment la barre d’outil au-dessus de la bibliothèque que t’as changée ? t’as fait ça comment ?
-
le coup de l’extraction aussi j’ai pas bien suivi
Ta bibliothèque d’archive :
-
je suppose que tu y déplaces les documents de ta bibliothèque principale
-
qu’est-ce qui déclenche l’archivage ?
-
l’idée c’est que cette bib. aie la même structure que celle d’origine
Autres questions :
-
C’est quoi l’idée de la bibliothèque de Référentiel ? C’est parce-qu’il y a des documents de différents types dans la bibliothèque principale et que ceux qui sont des référentiels tu aurais bien voulu les mettre dans une bibliothèque séparées ?
-
J’ai l’impression que tu vois la bibliothèque comme une “page d’accueil” à partir de laquelle on devrait pouvoir tout faire, jusqu’à naviguer vers une autre bibliothèque, etc. As-tu pensé à créer de vraies pages SharePoint où tu placerais tes différentes bibliothèques ?
CommentID=PpVDhINykeYOvix, PostID=aRhSNjRlGrFMcLU
-
-
Ok, merci pour la capture du déclencheur.
Et du coup, tu aurais la bonne capture pour l’emplacement exact où l’erreur apparaît ?
CommentID=C8TgAIov3ABo9PS, PostID=U66k14fOZnetmio
-
Ah… Alors j’ai une mauvaise et une bonne nouvelle… 😅
La mauvaise c’est qu’utiliser un fichier Excel sur un OneDrive comme “stockage de données” pour une application Power Apps qui va être partagée avec plusieurs personnes n’est pas la bonne approche. Tous ceux qui se sont lancés dans cette voie s’en sont mordus les doigts parce-que :
-
Un OneDrive est un espace de stockage personnel et n’est pas fait pour être utilisé pour du partage d’équipe (même si techniquement c’est possible)
-
Le partage de données sur fichier Excel et surtout l’accès concurrent pose rapidement des problèmes de stabilité
La bonne nouvelle c’est qu’il y a une autre solution tout aussi gratuite : SharePoint. C’est vrai que souvent les citizen développeurs comme toi restent sur de l’Excel par méconnaissance de SharePoint, mais en réalité c’est très simple d’utilisation et la pris en main est facile. Et si ça se trouve, tu connais déjà et tu manipules déjà un minimum dessus.
Du coup je t’encourage vraiment à basculer sur 2 petites listes SharePoint parce-que ça va vraiment te faciliter la vie après coup.
Kestendi ? On reste sur Excel ou on bascule sur SharePoint ?
Si tu décides de basculer sur SharePoint alors je te donnerais 2 ou 3 astuces pour créer tes listes proprement… 😉
CommentID=59834Elx1FjUim5, PostID=CCWAcEm9qqnSWF3
-
-
Alors si j’ai bien compris ce que tu veux faire, c’est qu’après avoir choisi l’élément de T2 tu veux créer une ligne dans T1 où CR1 pointe sur l’élément de T2 et où CR2 récupère la valeur de C2 pour l’élément de T2 en question. Cela implique que ta colonne CR2 dans T1 est simplement de type Nombre et pas une colonne de recherche.
Si c’est bien ça l’idée, ta ligne CR2 dans le patch doit être écrite comme ceci, sauf erreur de ma part :
CR2: Combobox1.Selected.CR2
En effet, dans Dataverse, un champ de recherche donne accès à l’ensemble des colonnes de la liste cible (pas comme dans SharePoint où il n’y a que Id et Value et où t’es obligé de faire un LookUp() pour aller voir les autres colonnes de la liste cible).
CommentID=j31DBiWuFNinMqX, PostID=71QCOzbAYdHB3OC
-
@Francois DUPUIS merci pour ces éléments.
Petite remarque pour commencer : dans Power Apps on ne parle pas de page mais d’écran… Utilisons les bons termes, on se comprendra mieux… 😉
Les données
C’est le cœur de ton application. Il faut donc déjà bien les ficeler pour que le reste roule tout seul…
Je récapitule tes listes :
-
RAPPORTS
-
ID (colonne native SharePoint)
-
Titre (colonne native SharePoint -> est-ce que tu l’utilises ? ou est-ce que tu l’as renommée ? qu’est-ce que tu mets dedans ?)
-
Date (date)
-
Agent (texte)
-
CP_agent (texte)
-
-
LISTE_TRAINS
-
ID (colonne native SharePoint)
-
Titre (colonne native SharePoint -> est-ce que tu l’utilises ? ou est-ce que tu l’as renommée ? qu’est-ce que tu mets dedans ?)
-
N° train (texte ou numérique ?)
-
Gare montée (texte)
-
Gare descente (texte)
-
BE (nombre)
-
BE_CA (nombre ?)
-
BC (nombre)
-
BC_CA (nombre ?)
-
PV (texte ?)
-
Observations (texte)
-
De ce que je comprends tu souhaites que les agents créent/remplissent des rapports sur des trains.
Du coup, premier problème : je ne vois pas de lien pour l’instant entre tes deux listes. Si ces deux listes ont besoin d’être liées alors il faut créer une colonne de type Recherche entre les 2.
Comme ça au premier abord je dirais que cette colonne doit être créée dans la liste RAPPORTS :
-
RAPPORTS
-
…
-
Train (recherche vers liste TRAINS, colonne N° train)
-
…
-
Procéder ainsi veut dire que : un agent à une date donnée fait un rapport sur un train -> à une ligne de RAPPORTS est associée une ligne de TRAINS.
Est-ce que pour l’instant on est bon ?
Maintenant d’autres questions peuvent être soulevées :
-
Est-ce qu’un agent peut être amené à faire plusieurs rapports dans la même journée pour différents trains ?
-
Est-ce qu’un même train peut-être rattaché à plusieurs rapports ?
-
Est-ce qu’il peut y avoir plusieurs trains rattachés au même rapport ?
Ces questions sont très importantes car elles peuvent avoir un impact direct sur la manière dont les données sont structurées et il faudra peut-être modifier les listes en fonction des réponses…
Il faudrait que tu y répondes en me mettant bien les numéros des questions pour que je m’y retrouve.
L’application
Au niveau de l’application, si j’ai bien compris tu as prévu les écrans suivants (tu vas voir que j’en profite pour te faire des suggestions d’organisation et de nommage -> je t’invite à les utiliser 😉) :
Ecran RAPPORTS
-
Une galerie galRapports_RAP qui liste tous les rapports (donc
galRapports_RAP.Items = RAPPORTS
) -
Un bouton btnNouveauRapport_RAP libellé Nouveau rapport
Actions :
-
Lorsque l’on clique sur le bouton Nouveau rapport on est amené sur l’écran NOUVEAU RAPPORT : un simple
Navigate('NOUVEAU RAPPORT')
suffit.
-
Lorsque l’on clique sur un rapport de la galerie, on est amené sur un écran REMPLIR RAPPORT. Pour faire ça proprement, il faut le faire ainsi 👍
galRapports_RAP.OnSelect = Navigate('REMPLIR RAPPORT'; ScreenTransition.None; {locRapport: ThisItem})
On transmets ainsi le rapport sélectionné (ThisItem) en tant que variable locale sur l’écran REMPLIR RAPPORT. Et sur cet écran REMPLIR RAPPORT tu pourras utiliser la variable locRapport qui contiendra toutes les données du rapport sélectionné.
Ecran NOUVEAU RAPPORT
-
Un formulaire frmRapport_NVRAP (où
DataSource = RAPPORTS
,DefaultMode = FormMode.New
et Item est vide) avec les champs suivants :-
Date (champ Date)
-
Agent (champ Agent)
-
Code agent (champ CP_agent)
-
-
Un icône Annuler nommé icoCancel_NVRAP (en forme de croix) pour annuler la création et où
OnSelect = Back()
-
Un icône Cocher nommé icoSave_NVRAP (en forme de coche) pour valider la création et où :
icoSave_NVRAP.OnSelect = SubmitForm(frmRapport_NVRAP)nnfrmRapport_NVRAP.OnSuccess = Notify("Le rapport a été créé avec succès."; NotificationType.Success);; Back()
Ecran REMPLIR RAPPORT
Celui-là on va se le garder sous le coude pour le moment car son organisation va dépendre des réponses que tu vas me donner aux questions 1, 2 et 3.
CommentID=Fg914GlyBtgxxhc, PostID=61aRRyEq60id5pE
-
-
Est-ce que tu peux me mettre une capture de ton déclencheur où on voit tous les paramètres pour que je voie leur type de données ?
CommentID=CPfXDr69o9rj1WQ, PostID=U66k14fOZnetmio