R3dKap
Expert Power AppsRéponses céées sur le Forum
-
Ludovic Perrichon, Loïc Cimon, Theophile CHIN-NIN une idée/suggestion pour notre ami Renaud VAILLANT ?
En attendant, en farfouillant très rapidement un peu j’ai trouvé ça :
https://www.avepoint.com/blog/fr/sharepoint-hybrid-fr/sharepoint-comme-salle-de-donnees-virtuelle
CommentID=X5wzsa3nnLHpn5b, PostID=liHtHGbcAuskrIL
-
Salut Laurent,
Tu dois avoir une variable pour chaque question, pas le choix… 😉
Mais avant de te donner une solution technique, il y a un certain nombre de points à voir :
-
Si je clique sur le + de question 1 et que je choisis Valeur3 dans la liste déroulante, il doit mettre Valeur3 dans le champ de la question 1.
-
Est-ce que je peux modifier manuellement et éditer le contenu du champ de la question 1 ?
-
Que se passe-t-il si je modifie le contenu de la question 1 ? Je suis plus raccord avec le choix que j’ai fait dans la liste déroulante !
-
Si j’ai saisi quelque chose dans le champ de la question 1 avant de faire mon choix via la popup, le fait de mettre Valeur3 dans le champ m’écrase tout ce que j’avais saisi auparavant ?
-
-
Quand je reviens en édition sur le formulaire, je dois récupérer les valeurs précédemment saisies je suppose ? Et donc je devrais retrouver Valeur3 dans le champ de la question 1 ? Je peux le modifier après-coup ?
En gros quelle mécanique précisément veux tu mettre en place ?
CommentID=KziHn9qgXHBO03m, PostID=n6caAbEU4DhTNeD
-
-
Non, pas besoin de diviser le formulaire.
Il faut que tu aies une liste avec les rôles de chaque utilisateur de l’application :
-
Jean-Louis : Demandeur
-
Jean-Charles : Demandeur
-
Jean-Christophe : Demandeur
-
Gérard : Manager
-
Patrick : DAF
-
Carlos : PDG
Lorsque l’application démarre, tu récupères dans cette liste la ligne correspondant à l’utilisateur connecté et tu le places dans une variable globale que tu vas utiliser partout dans ton application.
Et là tu n’a plus qu’à regarder le rôle dans cette variable globale pour définir si quelqu’un peut modifier le formulaire ou pas. Si c’est l’entièreté du formulaire qui est verrouillé ou pas, tu peux jouer sur la propriété Mode du formulaire que tu définis à FormMode.View ou FormMode.Edit selon les cas.
Si tu dois descendre au niveau des champs, càd faire en sorte que certains champs sont verrouillés ou pas en fonction du rôle de l’utilisateur connecté, alors il faut jouer sur la propriété DisplayMode du contrôle d’édition qui se trouve à l’intérieur du datacard (et qui s’appelle en général DataCardValueXXX).
Tu vois l’idée ?
CommentID=E4mtdgBgvdBU2zR, PostID=kwizlvGH2au8OBx
-
-
Est-ce que t’as un tableau qui liste les données du formulaire avec en face qui a le droit de faire quoi sur chaque champ ?
CommentID=AXRgzS38R1zj3yi, PostID=kwizlvGH2au8OBx
-
Salut Trouvpadenom,
Ta question est très large, donc pas facile d’y répondre précisément. Habituellement, les questions posées sont plutôt de l’ordre du blocage technique sur du code et du coup c’est plus facile de débloquer les gens… 😉
Ceci étant dit, grosso modo :
-
il te faut une table pour stocker les données des demandes
-
il te faut une table pour lister les personnes qui vont avoir accès au formulaire avec en face de chaque personne un rôle (celui-ci permettra de définir dans l’application qui a le droit de faire quoi)
-
dans ton appli, ce sera à toi de “coder” le fait que tel rôle puisse modifier tel champ à telle étape
-
et pour ce qui est de la validation, il y a pleins de solutions :
-
tu le “codes” toi-même dans l’application (par ex. le manager voit les demandes qu’il est censé valider)
-
tu déclenches un flux d’approbation
-
tu envoies sur le Teams du manager une adaptive card interactive
-
…
-
Mais avant tout ça, il faut que le besoin soit clair, après quoi un petit schéma du modèle de données à mettre en place et un autre petit schéma du processus de validation où on voit bien les différents intervenants avec leurs rôles ne serait pas de trop. Et après seulement, imaginer les écrans et la navigation… Tout ça se fait dans un ordre bien précis si tu veux pas que ce soit trop le fouillis…
Et puis il y a les aspects techniques : SharePoint/Dataverse ? PC/tablette/mobile ? sécurité des données ? …
Je sais pas si ça t’aide…
CommentID=0960Y0mDYKXNOsU, PostID=kwizlvGH2au8OBx
-
-
Bonjour Jean,
Voici quelques questions pour essayer de cibler le problème :
Est-ce que ton problème est toujours d’actualité ? Ce genre de comportement ne dure pas en général. As-tu essayé de vider complètement ton cache et de retenter ? As-tu de la mise en forme de liste sur ta liste ? Combien d’éléments possède-t-elle au total ? As-tu cassé l’héritage des droits sur certains éléments ?
CommentID=cjCUaSnXHg4ZlCP, PostID=KILFasOgyDJVDeX
-
R3dKap
Membre5 octobre 2023 à 13h04 en réponse à: Bonnes pratiques pour construire ses listes SharePoint (pour Power Apps ou autres)Salut MarKAR,
Alors en fait je ferais une liste à 2 colonnes (User et Rôle) qui permette de savoir quel est le rôle de chaque utilisateur de l’application.
Ainsi, lorsque l’application démarre :
-
j’affiche un message expliquant que l’utilisateur connecté n’a pas accès à l’application s’il ne se trouve pas dans cette liste
-
j’initialise une variable globale qui me permette de connaître le rôle de l’utilisateur connecté selon ce que l’on trouve dans cette liste
L’application est alors par exemple capable, en fonction du rôle de l’utilisateur connecté, de déterminer quelles sont les actions qu’il peut effectuer sur les données.
Est-ce que c’est à ce genre de choses que tu pensais ?
CommentID=LxeFb9M988Wb5jq, PostID=HCMBlpOf4M5aRFk
-
-
R3dKap
Membre4 octobre 2023 à 8h19 en réponse à: Comment construire son modèle de données SharePointVincent HERY non malheureusement… L’article en question se trouvait sur un ancien site qui a été supprimé (un peu violemment) par le prestataire qui propulsait le titre 🤬…
Du coup j’ai refais vite fait un tout petit article similaire avec les quelques schémas que j’avais heureusement conservé :
CommentID=OfDcpKCpwL2HHEV, PostID=QK6DEBOSjt0TF5L
-
R3dKap
Membre4 octobre 2023 à 7h18 en réponse à: Afficher les données de Dataverse dans une Page PowerPagesGilles Pommier une idée pour aider notre ami Jean Paul Anoh ? Je sais que t’as déjà pas mal manipé sur Power Pages… 😉
CommentID=Flnf21DFAFVRXkm, PostID=of1jPS04UkX18t7
-
Aaaaah… Quand je serais en galère sur mes regex je saurais vers qui me tourner maintenant… Héhéhé ! 😂
Merci pour l’article ypicot 👍
Perso, j’utilise ce site pour les écrire et les tester : https://regex101.com/. Mais je suppose qu’il en existe des tas… 😉
CommentID=lgzXMYCN1CgA3UU, PostID=JQwAjzxTqfzURiO
-
Salut Steve,
Non, malheureusement Power Apps ne peut pas interagir avec l’app des contacts du smartphone. Tout ce que tu peux faire c’est accéder aux contacts Outlook de l’utilisateur connecté à ton appli Power Apps… 😉
Power Apps n’est fait que pour bosser dans l’environnement Microsoft Cloud… et vers des applications externes via des connecteurs mais en règle générale il s’agit d’appel API au final… L’interaction avec le smartphone est extrêmement limité…
CommentID=F8SgAbtdeTHaBpD, PostID=1rC7LbjtOGFeGrD
-
Salut Hugotr35,
Vu l’erreur je suppose que ton application utilise un flux Power Automate qui fait des truc sur SharePoint. Si c’est bien le cas, essaie ça :
-
tu vas sur Power Automate
-
tu cliques sur ton flux et tu restes sur la page d’accueil
-
tu cliques sur le bouton qui permet d’exécuter manuellement le flux
-
il t’affiches à droite un panel pour te demander l’autorisation d’accéder à SharePoint
-
tu valides
-
il t’affiches ensuite (toujours dans le panel à droite) les éventuels paramètres de ton flux et te permet de l’exécuter
-
ne l’exécute pas, pas besoin
-
tu sors
Et là retente d’extraire ton app canvas… Si à l’étape 4 il t’affiche pas le panel d’autorisation mais que tu te retrouves direct à l’étape 6 avec le panel d’exécution, c’est qu’il doit y avoir un autre souci…
CommentID=m6tDgM7b2U2NP3R, PostID=I1Kzi6RMW5NZMej
-
-
R3dKap
Membre27 septembre 2023 à 15h23 en réponse à: Restauration de Backup d'environnement : à n'utiliser qu'en dernier recours !!Alexandre Perret merci pour ce retour intéressant. C’est vrai qu’étant donné la présence du GUID de l’application dans l’url d’exécution de celle-ci et puisque le restore change les GUID -> problème pour les utilisateurs qui avaient mis l’url d’origine dans leurs favoris. Sur mon projet actuel on a “résolu” cela en donnant accès à l’application via une page SharePoint. Comme ça si l’url de l’app change, on la change juste sur la page SP. Evidemment si des utilisateurs mettent ce lien en favoris il faudra qu’ils mettent leur favori à jour lorsque l’url change.
Maintenant que j’y pense, autre piste à creuser : un lien dans la barre d’applis de Teams (tout à gauche). A mon avis il doit être possible de placer un lien global pour tout le monde dans Teams qui déclenche le lancement de l’app dans un navigateur. A voir…
Sinon, sur l’origine même de ce qui a déclenché ton problème : l’url du déclencheur qui pointait vers un SP de DEV et que tu devais basculer sur un SP de PROD –> C’est précisément ce que les variables d’environnement permettent d’éviter. Une variable d’environnement a une valeur en DEV, une autre en REC et encore une autre en PROD. Toutes tes actions SP dans Power Automate sont pluggées sur des variables d’env. et s’adaptent et vont donc taper le bon SP en fonction que t’es en DEV, en REC ou en PROD. Du coup, plus besoin d’éditer tes flux pour faire de la config. Lorsque je déploie mes solutions sur la PROD je n’ai jamais aucune config à faire après le déploiement. Avais-tu envisagé de les utiliser ? Peut-être ne les as-tu pas utilisé par méconnaissance. Si c’est le cas je t’invite vraiment à t’y coller pour t’éviter ce genre de désagrément… 😉
Et pour le coup des appels API, lorsqu’il y a une très grande quantité d’utilisateurs comme c’est le cas ici, il faut malheureusement passer par une étape d’estimation du nombre d’appels API que va générer ton appli avant de la pousser en PROD pour s’assurer que celle-ci est correctement dimensionnée… 😉 Mais on apprend parfois en se plantant… 😅 Je pense que je me serais aussi fait avoir sur ce coup-là…
CommentID=pWdpJKJDgO63Qn3, PostID=ihjFRltgOehdmfx
-
Salut Lilian,
Une remarque de fond d’abord : que tu aies un contrôle de type text input ‘TSB_Recherche EJR/PC/ADV’ pour filtrer une colonne ‘Référence PC/Contrat’ de type texte (je suppose) -> OK.
Mais par contre, pour filtrer sur la colonne ‘Contrat : Statut’ (qui visiblement est de type Choice), il te faut une liste déroulante contenant les différentes valeurs de statuts et non pas un champ de saisie texte. Je vais donc supposer que ton ‘TSB_Recherche STATUT’ ne soit plus un champ texte mais une liste déroulante où le Items estChoices('ADV AuRA'.'Contrat : Statut')
.Du coup, essaie de combiner le Search() et le Filter() :
Filter(n Search(n 'ADV AuRA'; n TSB_Recherche.Text; n 'Référence PC/Contrat'n ); n IsBlank('TSB_Recherche STATUT'.Selected.Value) || 'Contrat : Statut' = 'TSB_Recherche STATUT'.Selectedn)
SubCommentID=nkPWDqOMhXv1TUe, CommentID=snmaEaed9bnGEe5, PostID=V2vbx9CLVuJQffX
-
Salut Romane,
Attention, ta problématique n’est pas si simple… 😉
Pour des raisons de performances, la fonction Choices() ne ramène jamais plus de 20 éléments environ. Tu ne pourras donc voir que les 20 premières personnes correspondant à la condition de ton Filter().
Par contre, si la recherche est activée sur ta combo box alors lorsque ton application s’exécute et que tu ouvres ta combo box tu pourras saisir le début du nom d’une personne et même s’il y en a 200 000 dans ton AD il t’affichera les 20 premiers qu’il trouvera.
Mais si tu fais un Filter() sur ton Choices(), comme le Choices() va s’exécuter en premier, il te ramènera d’abord les 20 premiers éléments PUIS il fera le Filter(). Donc, autant dire qu’il ne trouvera quasiment rien.
Bref… Impossible de faire ce que tu veux faire avec un Choices() sur ton champ de type Personne. Pour avoir une liste déroulante qui t’affiche les personnes de ton AD appartenant à un département donné de ton entreprise, il va te falloir passer par le connecteur Utilisateurs d’Office 365 (Office 365 Users). Ce connecteur fournit une fonction qui s’appelle SearchUserV2()…
Ah m…..e !!! Pas possible non plus… Cette fonction n’autorise la recherche que dans les champs suivants :
Source : https://learn.microsoft.com/en-us/connectors/office365users/#search-for-users-(v2)
Eh bin t’es coincée. Je crois que du coup t’es obligée de passer par un appel à Graph API pour faire ce que tu veux faire…
J’ai posé la questions à des potes experts… Je te dirais…
SubCommentID=XI8fYvRYK4zOPHS, CommentID=aF6JHNfeJpFIVbe, PostID=Y67nxbPk1ZsaKeG