problèmes avec la fontion "Patch" appliquée à un champs groupes & personnes

Étiquetté : 

  • problèmes avec la fontion "Patch" appliquée à un champs groupes & personnes

    Posté par styve sur 5 juillet 2022 à 8h56

    Bonjour la team,

    je ne suis pas très rodé en ce qui concerne power app. Je rencontre un problème avec la fonction patch pour soumettre un formulaire contenant des champs complexes (person et multichoice) permettant de remplir une liste sharepoint.

    J’ai ces 3 erreurs:

    • Types d’argument non valides. Valeur record attendue mais avec un schéma différent.

    • Type incompatible. La colonne “value” dans la source de donnée que vous mettez à jour attend un type “text” et vous utilisez un type error.

    • La fonction patch contient des arguments non valides.

    Pouvez-vous s’il vous plaît m’aider ? Je bloque dessus depuis une semaine.

    PostID=qav2GO1hmjc2PWF

    styve a répondu Il y a 10 mois, 3 semaines 1 Membre · 10 Réponses
  • 10 Réponses
  • DavidZed

    Membre
    5 juillet 2022 à 9h14

    Bonjour,

    Alors j’ai pas spécialement l’habitude des patchs Sharepoint, mais tu peux essayer ceci :

    Pour le datacardvalue3, vérifies que tu as quelque chose dans le style :

    Items: Choices('Projets.'User assigned')
    DisplayFields: ["DisplayName"]
    SearchFields: ["DisplayName"]

    Ensuite, pour ton patch de la colonne User Assigned mets simplement :

    'User assigned': Datacardvalue3.Selected

    (ton post n’est pas dans la bonne section >> Forum Power Apps)

    CommentID=Z6XXURxMW3JCjEJ, PostID=qav2GO1hmjc2PWF

    • styve

      Membre
      5 juillet 2022 à 12h24

      Hello DavidZed ,

      Merci pour ton retour. J’ai remplacé la ligne du ‘User assigned’ par ce que tu m’as donné et étrangement ça n’a pas réglé l’une des 3 erreurs que j’ai mais ça n’en a pas crée des erreurs supplémentaires non plus. Et dans mon ‘datacardvalue3’ j’ai la ligne items presque exactement comme toi :

      Cependant mon display fields est different de ce que tu as dans le sens où il a des arguments en plus, pas juste “Displayname”:

      SubCommentID=AZpv8ePHs3WeVjG, CommentID=Z6XXURxMW3JCjEJ, PostID=qav2GO1hmjc2PWF

  • DavidZed

    Membre
    5 juillet 2022 à 13h07

    pour le items & DisplayFields, cela m’a l’air ok

    J’ai retrouvé un projet sur lequel j’avais fait le même type de patch de personnes mais en multichoice (donc cela devrait marcher en simple 🙂 )
    Dans ton patch() :
    'User assigned': Datacardvalue3.SelectedItems

    S’il subsiste des erreurs, c’est qu’elles sont à un autre niveau, dans ce cas, il faudrait que tu repostes un screen de ton onselect où tu as ton patch

    CommentID=jBMyqESZDnSg5EK, PostID=qav2GO1hmjc2PWF

  • R3dKap

    Membre
    5 juillet 2022 à 14h05

    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

  • styve

    Membre
    5 juillet 2022 à 14h29

    Hello R3dKap ,

    Merci pour ta réponse détaillée, c’est le genre d’intervention qui me permet d’en apprendre énormément. J’ai mis le champs “progress” en commentaire vu que je pense aussi qu’il est un peu fautif. Il est de type “choix”. Je l’ai reformaté en mettant des ID dans la partie “App” et propriété “OnStart” du menu tout à gauche. Dans la propriété Items de DataCardValue31 j’ai juste mis Prog (la collection que je crée dans la capture ci-dessous).

    Ensuite, j’ai retiré les @odata et maintenant j’ai deux erreurs différentes:

    • le type de cet argument “User_x0020_assigned” ne correspond pas au type attendu “table”. type trouvé “record”.

    • La fonction patch contient des arguments non valides.

    CommentID=Dw4Sunbqqhldh8G, PostID=qav2GO1hmjc2PWF

  • R3dKap

    Membre
    7 juillet 2022 à 20h37

    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

    • styve

      Membre
      8 juillet 2022 à 9h43

      Hello R3dKap , merci pour ton retour, c’est le résultat de tutos😅 qui n’utilisent que cette méthode. parce qu’April dans son tuto recréée cette structure du champs choices attendue par sharepoint lors de la soumission du formulaire de cette façon, ce qui fait que je n’ai pas chercher à savoir si il y’avait de meilleure façon de faire. En tout cas maintenant je sais.

      SubCommentID=y48F7kBuHl1f86L, CommentID=UaEHSXYmQxoJisH, PostID=qav2GO1hmjc2PWF

    • R3dKap

      Membre
      8 juillet 2022 à 12h31

      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

  • Admin

    Membre
    7 juillet 2022 à 20h55

    styve : est-ce que tu pourrais rejoindre l’espace Power Apps pour que je puisse y déplacer ton post ? Merci 😉

    CommentID=rI7XyUWXw2nWVoM, PostID=qav2GO1hmjc2PWF

    • styve

      Membre
      8 juillet 2022 à 9h44

      Hello, yes Admin je fais ça. Merci encore.

      SubCommentID=9Awj5lQVgnrgWbq, CommentID=rI7XyUWXw2nWVoM, PostID=qav2GO1hmjc2PWF

Connectez-vous pour répondre.