Réponses céées sur le Forum

Page 55 sur 85
  • R3dKap

    Membre
    8 juillet 2022 à 16h33 en réponse à: Naviguer dans les variables de type Array

    Nickel Delphine… Très clair, merci ! 👍

    Le modèle de données

    Alors tu vois, clairement dans ton cas j’identifie tout de suite qu’en fait il te faudrait une liste des critères. Car c’est une information que tu retrouves dans 2 autres listes. A partir du moment où une information (qui identifie quelque chose de tangible) se retrouve dans plus d’une liste, c’est qu’il faut lui prévoir une liste dédiée.
    Idem pour les points de contrôles… 😉

    En fait, rien qu’en lisant les 2 phrases de ton besoin métier au début de ton dernier post, je me suis tout de suite dit : donc il faut une liste des points de contrôles, une liste des critères, une liste qui spécifient quels critères sont vérifiés sur chaque point de contrôle et une dernière liste qui permette de stocker les relevés fait chaque jour.
    Le fait de partir sur une structuration des données de cette manière (avec des liens entre les listes) clarifie les choses et te simplifie tout par la suite…

    Mais c’est pas grave… Tu as déjà bien avancé donc on va rester là-dessus… Essaie de t’appliquer cette règle pour la prochaine fois. 😉

    Rapport journalier

    Avant de chercher à optimiser, faut chercher à faire simple. La solution simple consisterait à récupérer dans liResultatsControles toutes les lignes du jour où SommeDefauts > 0. Ensuite, on bouclerait sur ces lignes pour générer le code HTML de chaque ligne du 2è tableau en allant chercher à chaque fois dans la liste liPointsControles le libellé des critères concernés.

    Ce qui n’est pas très optimisé c’est qu’on va faire des tas de requêtes à liPointsControles pour aller rechercher à chaque fois le bon libellé du critère. L’idéal consisterait à charger une seule les lignes de liPointsControles dont on a besoin pour ensuite travailler uniquement avec des variables… Mais ça peut vite prendre la tête… Donc faisons simple pour l’instant.

    Vu ton niveau je pense que faire une boucle sur liResultatsControles puis rechercher le bon libellé de chaque critère dans liPointsControles tu devrais y arriver non ?

    Qu’en penses-tu ? Appelle à l’aide sinon… 😊

    CommentID=MMqPFsE25PjDUmV, PostID=h9tWwTqhOvUkZFM

  • R3dKap

    Membre
    8 juillet 2022 à 13h35 en réponse à: Galerie – PDF

    Jonathan FRANÇOIS je te suggère ceci :

    ...n<h1>1. Liste récapitulative des observations</h1>n<br>" & If(IsEmpty(Gallery4.AllItems); "Sans observations"; "<ol>" & Concat(Gallery4.AllItems; $"<li>{Obs}</li>") & "</ol>"n) & "<br>n...

    CommentID=y9uzThvtpm0S4io, PostID=NYYo632IvcTJ4vP

  • R3dKap

    Membre
    8 juillet 2022 à 13h25 en réponse à: Naviguer dans les variables de type Array

    C’est parce-que c’est les vacances… 😋

    Merci pour tout le détail… Avant de me plonger à fond dedans je vais tenter un tour de passe-passe passk’on sait jamais qu’on puisse éviter tout ça… >>> A quoi va te servir cette Table2 au final ? Tu veux générer un PDF ? Envoyer un tableau par mail ? Construire un fichier ?

    Autre approche intéressante : oublions totalement la technique et explique-moi ce que tu veux faire (parle-moi uniquement besoin, métier et données). Décris-moi ton modèle de données (tes listes SharePoint avec leurs colonnes). Ensuite dis-moi ce que t’as déjà fait : une app ici pour faire ça, un flux là appelé par l’app pour faire ceci, etc.

    En fait ce qui m’intrigue dans ton histoire, c’est pourquoi générer autant de tables dans ton flux ? Pourquoi ne pas travailler directement avec des boucles imbriquées sur les différents listes SharePoint ?

    Bon ça fait bcp de questions… Je te laisse bosser… 😅

    CommentID=2dWKM6y8pDA4cf2, PostID=h9tWwTqhOvUkZFM

  • R3dKap

    Membre
    8 juillet 2022 à 12h11 en réponse à: Naviguer dans les variables de type Array

    Delphine c’est pas du JS, c’est du “Power Automate” maison : le Workflow Definition Language… 😅

    Alors ta tentative est la bonne mais de ce que je comprends du message d’erreur variables('Table')[0] te retournes une chaîne et pas une structure à plusieurs colonnes.

    Est-ce que tu peux nous montrer comment tu construis ta table ?

    CommentID=2CxkSNM2W6ITLmI, PostID=h9tWwTqhOvUkZFM

  • R3dKap

    Membre
    7 juillet 2022 à 21h08 en réponse à: Ouverture de PDF

    ChezWam tu ne peux pas, à partir de Power Apps, faire un lien vers un fichier qui est stocké sur un serveur de fichiers externe au cloud Microsoft. La solution la plus simple serait de mettre tes PDF dans une bibliothèque SharePoint comme le montre DavidZed

    CommentID=aZGVQbZrkzx4lDL, PostID=hUmIG8SYVPZ7GjW

  • R3dKap

    Membre
    7 juillet 2022 à 21h04 en réponse à: Galerie – PDF

    Jonathan FRANÇOIS essaie ceci :

    Concat(Gallery4.AllItems; $"<li>{Obs}</li>")

    Et pense à enlever le <li> et le </li> qui sont juste au-dessus et en-dessous de ton Concat()…

    CommentID=fZY4eIWCUcp3CB2, PostID=NYYo632IvcTJ4vP

  • Ok, alors commençons par ce champ Progress

    Pourquoi définir une collection Prog dans ton App.OnStart pour alimenter ton DataCardValue31 ?

    Tu utilises des datacards donc tu as un formulaire qui, je suppose, doit être branché sur ta liste SharePoint. Si c’est bien le cas, ton DataCardValue31 devait contenir au début un code qui ressemblait à ceci :

    Choices(TaListe.TonChampProgress)

    Pourquoi l’avoir enlevé ?

    Ce code a l’avantage de générer automatiquement une table dont la structure correspond à ton champ côté SharePoint. Et du coup dans un Patch() il te suffirait alors de mettre ceci : {Progress: DataCardValue31.Selected}. Mais puisque tu as changé la structure des données qui alimentent ton DataCardValue31, tout se complique… C’est pas impossible à faire mais c’est un poil plus touchy…

    CommentID=UaEHSXYmQxoJisH, PostID=qav2GO1hmjc2PWF

    • Redonne-moi le lien du tuto d’April pour que je regarde pourquoi elle fait ça ?

      Parce-qu’en plus j’ai pas poussé plus loin hier, mais en fait si ton utilisation du formulaire est basique, tu n’as pas à faire de Patch(). Un simple appel à la fonction SubmitForm() suffit à créer ou mettre à jour tes données selon le mode du formulaire. Est-ce que tu me suis ou tu as besoin de plus d’infos ?

      Sinon décris-moi un peu plus ton app et ce que t’essaies de faire…

      Faut absolument que je démarre mon projet de mini-vidéos sur pleins de petits sujets comme expliquer en détail comment fonctionne chaque contrôle de Power Apps… 😅

      SubCommentID=cdzizRjXYIXOCq8, CommentID=UaEHSXYmQxoJisH, PostID=qav2GO1hmjc2PWF

  • Salut styve,

    A mon avis, l’erreur que tu as sur ta capture initiale se situe au niveau du sous-champ Claims qui n’est pas au bon format.

    Pour rappel (et comme on le voit bien sur ta capture), une colonne de type User dans SharePoint a la structure suivante :

    t{nt        DisplayName: "";nt        Claims: "i:0#.f|membership|email@domain.com;nt        Department: "";nt        Email: "";nt        JobTitle: "";nt        Picture: Blank()nt}

    Comme tu le vois, le Claims doit être formatté ainsi :

    i:0#.f|membership|<adresse mail>

    Donc ton la partie concernée de ton Patch() doit ressembler à ceci :

    'User assigned': {n    Claims: "i:0#.f|membership|" & DataCardValue3.Selected.Email;n    Department: "";n    DisplayName: DataCardValue3.Selected.DisplayName;n    Email: DataCardValue3.Selected.Email;n    JobTitle: "";n    Picture: Blank()n}

    Je préfère mettre Blank() pour Picture vu que c’est censé être de la données d’image brute, mais comme y’en pas Blank() c’est bien. Mais je pense que “” marche aussi…

    Tu noteras aussi la disparition du ‘@odata’ : tu peux les enlever partout dans ton code ; ils ne servent plus à rien aujourd’hui. C’était pertinent y’a encore quelques années quand le système n’était pas capable de reconnaître automatiquement le format des données. Aujourd’hui c’est le cas… 😉

    Maintenant, comme le dis DavidZed si ta colonne SharePoint est bien de type User, pas besoin de détailler la structure dans ton Patch(). Tu devrais pouvoir l’écrire simplement comme ceci :

    'User assigned': DataCardValue3.Selected

    A priori tu as aussi un souci avec ton champ Progress. Pour le solutionner il faudrait que tu nous dises ce que tu as dans le Items de ton DataCardValue31 et SURTOUT quelle est le type de la colonne SharePoint associée ?

    Je te recommande de mettre en commentaire dans ton Patch() les champs qui posent problème, histoire d’avoir déjà un Patch() sans erreur. Puis ensuite, décommente les champs au fur et à mesure et corrige les erreurs au fur et à mesure. Sinon t’as plusieurs erreurs simultanées et quand t’en corriges une tu ne sais pas si elle est vraiment corrigée parce-qu’il y en a potentiellement une autre… 😉

    NOTE : les DisplayFields et SearchFields n’ont absolument aucun impact sur l’enregistrement dans ta source de données ; ces propriétés influent uniquement sur le comportement à l’écran (champs à afficher et champs à utiliser pour la recherche).

    CommentID=PaEG70CxhVeRizp, PostID=qav2GO1hmjc2PWF

  • R3dKap

    Membre
    29 juin 2022 à 20h47 en réponse à: Une dose de curiosité

    ChezWam perso je n’utilise plus que le conteneur horizontal et vertical… Faut s’y coller pour bien comprendre comment ça marche, mais une fois que tu maîtrises le gain de temps est absolument phénoménal !

    Le conteneur classique je ne l’utilise que lorsque j’ai besoin de superposer des éléments… 😉

    Si t’as besoin d’aide sur les horizontal et vertical, n’hésite pas… 🙂

    CommentID=E2a2JP21oIs25L0, PostID=Ou7N3h97YjZ7d0L

  • R3dKap

    Membre
    29 juin 2022 à 20h44 en réponse à: Navigate between screens based on checkbox value on power apps

    Salut Ahmed Njimou,

    Si tu as toujours un souci là-dessus voici comment je procèderais (mets tes propres noms de checkbox et d’écrans)…

    CheckboxRéservoir.OnCheck = Collect(colNav; {Ordre: 1; Ecran: EcranRéservoir})nnCheckboxRéservoir.OnUncheck = Remove(colNav; {Ordre: 1; Ecran: EcranRéservoir})nnCheckboxPoste.OnCheck = Collect(colNav; {Ordre: 2; Ecran: EcranPoste})nnCheckboxPoste.OnUncheck = Remove(colNav; {Ordre: 2; Ecran: EcranPoste})nnCheckboxPomperie.OnCheck = Collect(colNav; {Ordre: 3; Ecran: EcranPomperie})nnCheckboxPomperie.OnUncheck = Remove(colNav; {Ordre: 3; Ecran: EcranPomperie})nnCheckboxDCI.OnCheck = Collect(colNav; {Ordre: 4; Ecran: EcranDCI})nnCheckboxDCI.OnUncheck = Remove(colNav; {Ordre: 4; Ecran: EcranDCI})

    Ecran d’accueil (celui avec tes checkbox)

    EcranAccueil.OnVisible = Clear(colNav);; Reset(CheckboxRéservoir);; Reset(CheckboxPoste);; Reset(CheckboxPomperie);; Reset(CheckboxDCI)nnBoutonNext.OnSelect = ClearCollect(colNav; Sort(colNav; Ordre));; Set(gloNavIndex; 1);; Navigate(Index(colNav; gloNavIndex).Ecran)

    Ecran Réservoir

    BoutonNextRéservoir.OnSelect = Set(gloNavIndex; gloNavIndex+1);; Navigate(If(gloNavIndex > CountRows(colNav); Home; Index(colNav; gloNavIndex).Ecran))

    Et mets ce même code sur chacun des boutons NEXT des écrans Poste, Pomperie et DCI.

    Voilà, j’ai testé chez moi ça marche… 😉

    CommentID=924ZpiD6tZZpx55, PostID=7o23zXbRD74XcQt

  • R3dKap

    Membre
    29 juin 2022 à 20h00 en réponse à: Problèmes de lenteur

    Salut Tanguy Badier,

    Je n’ai pas eu l’occasion d’expérimenter ce genre de comportement mais en te lisant il me semble que le pb provienne quand même du réseau interne puisqu’à priori tu dis qu’elle fonctionne sur un réseau externe…

    Désolé de pas pouvoir t’aider plus…

    CommentID=0IX59AIebqjdLg0, PostID=pD1zpVyb6kIRfwi

  • R3dKap

    Membre
    10 juin 2022 à 10h57 en réponse à: Ignorer les modifications lors de la synchro SharePoint

    C’est plutôt étonnant… Je n’ai pas remarqué ce genre de choses de mon côté…

    CommentID=3oviCqoW21s5g8u, PostID=3neMteHARqkgTAn

  • Vincent HERY lorsque tu envoies un mail depuis Automate, tu peux spécifier l’expéditeur. Mais il faut pour cela que tu aies les droits sur la boîte mail d’expédition, comme indiqué dans le texte d’aide affiché dans le champ :

    CommentID=8fYKHgqUk5k66pZ, PostID=6visKTVe5BfNTIN

  • Salut Youcef,

    Alors finalement de notre côté, nous lançons un flux Power Automate qui se charge de construire de l’HTML qui est ensuite converti en PDF. C’est ce que je faisais avant.

    Donc, on utilise pas de doc Word (je suis pas fan d’ailleurs)…

    Est-ce que tu pourrais pas faire pareil : un flux qui génère de l’HTML puis le converti en PDF ? Resterait à voir comment déclencher le flux : un événement sur une table dataverse ? une mini-app canvas incrustée sur une de tes pages model-driven, avec juste un bouton pour déclencher le flux ?

    SubCommentID=j3SP6HSlv5tyutD, CommentID=OLSyoSOmaKAGMdJ, PostID=PPEcpDVStySOmlk

Page 55 sur 85