Powerapps et liste sharepoint + bouton

Étiquetté : 

  • Powerapps et liste sharepoint + bouton

    Posté par francois sur 27 septembre 2023 à 5h10

    Bonjour,

    J’essaie de créer une app qui permet de lister les passage au guichet d’une bureau /les téléphones.

    Je suis parti d’une liste sharepoint:

    Le titre est automatique, desk-tel est une liste de choix, user également, date heure auto et prestation liste de choix.

    L’idée est d’avoir un écran principal

    L’utilisateur cliquer sur un des boutons dans la première section, Desk 1, 2, 3 ou Téléphone, puis sur un des boutons dans la deuxième section (ses initiales), puis enfin sur un des boutons dans la troisième section (prestation).

    Je voudrais arriver à:

    1. Créer la séquence, clique 1, 2, 3 (obligatoire de cliquer sur la première section pour cliquer sur la 2ème, et ensuite sur la troisième)

    2. Que chaque séquence (1, 2, 3) crééé une ligne dans ma liste sharepoint comme dans l’exemple plus haut.

    Pour l’instant j’ai uniquement les colonnes de la liste sharepoint qui sont liées, deux lignes d’exemple et des boutons qui n’ont aucune fonction.

    Merci de votre aide.

    PostID=KgHi4mBKuf8BEIo

    francois a répondu Il y a 9 mois, 3 semaines 1 Membre · 17 Réponses
  • 17 Réponses
  • DavidZed

    Membre
    27 septembre 2023 à 6h11

    Bonjour Francois ,

    Tu peux partir sur cette approche : Utiliser trois variables pour stocker les réponses pour chacun des groupes.

    Sur le OnSelect des boutons du groupe 1 (exemple) :

    UpdateContext({ctxDesk-Tel : {Value: "Desk1"}}) // Value car colonne de type choice

    Pour le groupe 2

    UpdateContext({ctxUser : "JZ"})

    Pour le groupe 3

    UpdateContext({ctxPresta : "OFPOP"})

    Ensuite il te faudra un bouton “Valider” pour patcher ta source de données :

    Patch('Ta liste Sharepoint'; Defaults('Ta liste Sharepoint') ; { desk-tel : ctxDesk-Tel ; User: ctxUser ; Prestation : ctxPresta} );;n// Réinitialisation des variables une fois le patch terminénUpdateContext({ctxDesk-Tel : Blank() ; ctxUser : Blank() ; ctxPresta : Blank() })

    et enfin pour chaque groupe de boutons, tu pourras mettre son DisplayMode qui change en fonction de la présence de la réponse précédente :

    Pour le groupe 2

    If(IsBlank(ctxDesk-Tel) ; DisplayMode.Disabled ;  DisplayMode.Edit)

    Pour le groupe 3

    If(IsBlank(ctxUser) ; DisplayMode.Disabled ;  DisplayMode.Edit)

    Pour le bouton “valider”

    If(IsBlank(ctxPresta) ; DisplayMode.Disabled ;  DisplayMode.Edit)

    CommentID=8aU6jOqvVD95zlM, PostID=KgHi4mBKuf8BEIo

  • francois

    Membre
    27 septembre 2023 à 7h35

    Merci trop top.

    Je suis bloqué au bouton valider.

    J’ai modifié le nom de la colonne desk-tel en desktel et changer le type de colonne User en texte et non en choix.

    CommentID=P59QZwCrH9Du4H3, PostID=KgHi4mBKuf8BEIo

  • francois

    Membre
    27 septembre 2023 à 7h37

    les boutons sont bien paramétrés?

    CommentID=TFgHzXgMyB4IfyO, PostID=KgHi4mBKuf8BEIo

    • DavidZed

      Membre
      27 septembre 2023 à 9h20

      Si tu as changé le type de colonne en texte alors il faut modifier la formule, car là tu fournis un record, essaies sans le {Value: } :

      UpdateContext({ctxDesktel : "Desk1"})

      SubCommentID=pUou90d0VjG2ZER, CommentID=TFgHzXgMyB4IfyO, PostID=KgHi4mBKuf8BEIo

  • francois

    Membre
    28 septembre 2023 à 6h06

    Merci, la colonne desktel est toujours en choix donc value. Je suis toujours bloqué sur la formule du bouton de validation

    Patch('OFPOP Desk'; Defaults('OFPOP Desk') ; { desktel : ctxDesktel ; User: ctxUser ; Prestation: ctxPresta} );;nUpdateContext({ctxDesktel: : Blank() ; ctxUser : Blank() ; ctxPresta : Blank() })

    CommentID=dAlT2exinpyIqz8, PostID=KgHi4mBKuf8BEIo

  • DavidZed

    Membre
    28 septembre 2023 à 6h35

    Alors pour celle-ci, il y a un “:” en trop :

    Pour l’erreur de type attendu sur le champ prestation, au temps pour moi j’avais lu un peu vite et il me semblait que c’était un champ type texte. Du coup c’est au niveau de tes boutons réponses qu’il faudra changer :

    UpdateContext({ctxPresta : "OFPOP"})

    en

    UpdateContext({ctxPresta : { Value : "OFPOP" } } )

    Je te conseille de garder ce lien vers l’excellent blog Sharepains en favoris, cet article référence les différentes manières de patcher des colonnes complexes de Sharepoint.

    (attention, l’auteur a volontairement laissé la syntaxe d’origine, qui inclut nottament le type odata : '@odata.type':"#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference qui devait être précisé obligatoirement, depuis un peu plus de deux ans la syntaxe a été simplifiée)

    CommentID=PM03ILIx0Rcm5kN, PostID=KgHi4mBKuf8BEIo

  • francois

    Membre
    28 septembre 2023 à 9h36

    Merci beaucoup pour les conseils.

    Cela fonctionne, sauf la fonction Patch:

    Patch('OFPOP_Desk_list'; Defaults('OFPOP_Desk_list') ; { Desktel: ctxDesktel ; User: ctxUser ; Presta: ctxPresta} );;n// Réinitialisation des variables une fois le patch terminénUpdateContext({ctxDesktel: Blank() ; ctxUser : Blank() ; ctxPresta : Blank() })

    CommentID=XAaSW6Iw0WeOKlM, PostID=KgHi4mBKuf8BEIo

    • DavidZed

      Membre
      28 septembre 2023 à 9h57

      Tout est dans le message d’erreur, en effet la colonne Titre / Title est une colonne imposée par Sharepoint qui est toujours obligatoire.

      Tu peux en profiter y renseigner une référence en fonction de l’utilisateur et de la date par exemple :

      UpdateContext({Titre : User().DisplayName & " - " Text(Today(),"yymmdd")) ; ctxDesktel: Blank() ; ctxUser : Blank() ; ctxPresta : Blank() })

      SubCommentID=Vo2fSH3LBk757iA, CommentID=XAaSW6Iw0WeOKlM, PostID=KgHi4mBKuf8BEIo

  • francois

    Membre
    28 septembre 2023 à 9h37

    Est-ce que vous connaissez une formation efficace en français sur PowerApps? Linkedin e-learnin?

    CommentID=eNCSSJ1JWiXvV9e, PostID=KgHi4mBKuf8BEIo

  • francois

    Membre
    28 septembre 2023 à 11h08

    Toujours pas good, désolé…

    Patch(OFPOP_Desk_list; Defaults(OFPOP_Desk_list) ; { Desktel: ctxDesktel ; User: ctxUser ; Presta: ctxPresta} );;n// Réinitialisation des variables une fois le patch terminénUpdateContext({Titre : User().DisplayName & " - " Text(Today(),"yymmdd")) ; ctxDesktel: Blank() ; ctxUser : Blank() ; ctxPresta : Blank() })

    CommentID=xo4EQUnO3sCvWBp, PostID=KgHi4mBKuf8BEIo

  • DavidZed

    Membre
    28 septembre 2023 à 11h29
    Petite erreur de syntaxe : Patch(OFPOP_Desk_list; Defaults(OFPOP_Desk_list) ; { Desktel: ctxDesktel ; User: ctxUser ; Presta: ctxPresta} );;n// Réinitialisation des variables une fois le patch terminénUpdateContext({Titre : User().FullName & " - " &Text(Today(),"yymmdd")) ; ctxDesktel: Blank() ; ctxUser : Blank() ; ctxPresta : Blank() })

    Si tu as un doute sur une propriété de sortie, tu peux t’aider de la saisie assistée des formules, si tu tapes User(). dans ta barre de formule, il te mettra la liste des propriétés disponible sur cette fonction

    CommentID=QvvKEyCqotp8hci, PostID=KgHi4mBKuf8BEIo

  • francois

    Membre
    28 septembre 2023 à 11h57

    Oui, j’ai testé avec FullName mais toujours 6 erreurs.

    Patch(OFPOP_Desk_list; Defaults(OFPOP_Desk_list) ; { Desktel: ctxDesktel ; User: ctxUser ; Presta: ctxPresta} );;n// Réinitialisation des variables une fois le patch terminénUpdateContext({Titre : User().FullName & " - " Text(Today(),"yymmdd")) ; ctxDesktel: Blank() ; ctxUser : Blank() ; ctxPresta : Blank() })

    Un opérateur était attendu..

    Caractère inattendus (5x)

    Désolé de t’embête, on y arrive….

    CommentID=ofoH0YNU7RpCpvR, PostID=KgHi4mBKuf8BEIo

  • francois

    Membre
    28 septembre 2023 à 12h15

    C’est bon, problème de syntaxe ou format de date je pense:

    Patch(OFPOP_Desk_list; Defaults(OFPOP_Desk_list) ; { Desktel: ctxDesktel ; User: ctxUser ; Presta: ctxPresta} );;n// Réinitialisation des variables une fois le patch terminénUpdateContext({Titre : User().FullName & Text(Today()) ; ctxDesktel: Blank() ; ctxUser : Blank() ; ctxPresta : Blank() })

    CommentID=5HQr0UmkeXG4JFQ, PostID=KgHi4mBKuf8BEIo

  • francois

    Membre
    28 septembre 2023 à 12h23

    Les deux choses qui me reste à régler sont les suivantes. Si tu peux encore m’aider? Navré…

    L’application est publiée. Une fois que j’ai sélectionné catégorie 1, 2, 3 et validé je rencontre UN DERNIER problème:

    1. Les données ne sont pas insérées dans la liste Sharepoint

    Merci beaucoup pour ton aide.

    CommentID=n1eFvw3PnlqZEy6, PostID=KgHi4mBKuf8BEIo

  • francois

    Membre
    29 septembre 2023 à 5h48

    Je peux ajouter des enregistrements manuellement mais rien ne se passe depuis l’app

    CommentID=OiKBlSfIbhP7frp, PostID=KgHi4mBKuf8BEIo

  • francois

    Membre
    29 septembre 2023 à 8h31

    C’est réglé merci encore pour tout

    CommentID=UnWGdzqRaL9mMSO, PostID=KgHi4mBKuf8BEIo

  • francois

    Membre
    2 octobre 2023 à 7h45

    Bonjour David, encore un petit détail à régler.

    La colonne Time affiche 2 heures d’avance dans Power BI pourtant les paramètres régionaux du site sharepoint sont OK.

    Power BI

    Liste Sharepoint:

    Une idée? Adapter la fonction Patch?

    Elle est comme cela actuellement:

    Patch(OFPOP_Desk_list; Defaults(OFPOP_Desk_list) ; { Desktel: ctxDesktel ; User: ctxUser ; Presta: ctxPresta} );;nn// Réinitialisation des variables une fois le patch terminénnUpdateContext({Title:User().FullName & Text(Today()) ; ctxDesktel: Blank() ; ctxUser : Blank() ; ctxPresta : Blank() })

    CommentID=kuSBuYTDj5Oi3vG, PostID=KgHi4mBKuf8BEIo

Connectez-vous pour répondre.