DavidZed
MembreRéponses céées sur le Forum
-
DavidZed
Membre29 septembre 2023 à 21h15 en réponse à: Contrôle de champs "texte" pour plaque d'immatriculationHello Jean ,
Dans ce cas de figure, on peut utiliser les fonctions :
-
IsMatch() : Pour s’assurer qu’une chaîne respecte un certain format
-
Upper() : pour transformer les minuscules en majuscules
-
Right() et Left() : Pour extraire des caractères d’une chaîne
-
Substitute() : Pour remplacer des caractères dans une chaîne
Tu peux ajouter un label texte pour indiquer si la saisie est correcte (attention syntaxe en anglais) :
If(IsMatch(n With({ // On nomme des constantes pour simplifier le la formule qui suitn Immat:TextInputSaisie.Text,n Sep1:Left(TextInputSaisie.Text,3),n Sep2:Right(TextInputSaisie.Text,3)},nn Upper( // on transofrme les minuscules en majusculesn Substitute( n Substitute( n Immat,Sep1,Left(Sep1,2)&"-"),// On remplace les 3 premiers caractères par les 2 premiers suivi de "-" = on remplace le 3eme caractère par un tiretn Sep2,"-"&Right(Sep2,2) // On remplace les 3 derniers caractères par un "-", suivi par les 2 derniers = on remplace le 7eme caractère par un tiretn ))),n Match.Letter&Match.Letter&Match.Hyphen&Match.Digit&Match.Digit&Match.Digit&Match.Hyphen&Match.Letter&Match.Letter), // On verifie que le tout correspond au format : 2 lettres, tiret, 3 chiffres, tiret, deux lettresn "Format OK" ,// Si ouin "Merci de respecter le format ''AA-000-AA''" ) //Sinon
ce qui devrait donner :
Tu peux ensuite utiliser le IsMatch et son contenu pour conditionner l’update du datacard
CommentID=5M4aIydMuSvUrQX, PostID=erpIzqrXOw59kfW
-
-
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 fonctionCommentID=QvvKEyCqotp8hci, PostID=KgHi4mBKuf8BEIo
-
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
-
DavidZed
Membre27 septembre 2023 à 19h18 en réponse à: Restauration de Backup d'environnement : à n'utiliser qu'en dernier recours !!Argh en effet c’est plutôt hardcore comme effet de bord. Comme quoi la backup d’environnement c’est pas tout à fait anodin 🙁
Si vous avez le Coe starter kit ou un équivalent pour la gouvernance, tu peux peut-être automatiser un mail / une notif pour chaque app présente sur l’environnement vers ses propriétaires et copropriétaires pour leur demander de mettre à jour leurs liens ?
J’espère que tout rentrera dans l’ordre assez vite, c’est vrai que bosser sur des environnements avec des centaines de milliers d’utilisateurs et plusieurs milliers d’applications, pour y avoir été confronté, on a parfois l’impression de marcher sur des œufs à chaque action 😨
CommentID=FrryYjqtakpoEUp, PostID=ihjFRltgOehdmfx
-
Tu dois pouvoir récupérer la structure (et les données) de chaque table avec un dataflow (Outil importer des données)
Il y aura peut être quelques transformations à faire en Power Query :
CommentID=oD170WZRyRUwXwc, PostID=fyZZkwMdGOYXBnB
-
Bonjour Fred Evellin ,
Si on peut facilement convertir un environnement D4T (Dataverse for Teams) vers un environnement Dataverse, l’inverse n’est malheureusement pas possible.
D4T a une version “light” de Dataverse.
Ce que tu peux essayer de faire :
Reproduire tes tables dans l’environnement D4T (en respectant au maximum les types et noms de colonnes)
exporter ton app en .zip depuis l’éditeur et l’importer dans l’éditeur D4T (pas sûr que ça fonctionne non plus)
Pour ce qui est des licences, il n’y a pas de licence unique avec nombre d’utilisateurs illimités
Par contre il est possible d’affecter des app passes à l’environnement et d’autoriser l’application à consommer ces passes. Dans ce cas, chaque utilisateur qui va lancer l’application va se voir attribuer une licence per app à 5$
CommentID=3oGKZ4KbnU6cV4R, PostID=fyZZkwMdGOYXBnB
-
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
-
Pour ma part j’ai constaté 3 bugs dans le studio en ce moment :
-
Tous les contrôles disparaissent de l’écran, la zone de prévisualisation affiche une page blanche vide
-
Il suffit de cliquer sur un autre écran et revenir sur le 1er
-
-
L’écran devient entièrement gris (menus de navigation et paramètres inclus)
-
Rafraichissement de la page au niveau du navigateur obligatoire
-
-
La barre de formule classique est vide et inutilisable
-
Rafraichissement de la page au niveau du navigateur obligatoire
-
CommentID=KtxNMKvgNTZseZ6, PostID=DytAawLzZ66K4cu
-
-
DavidZed
Membre25 septembre 2023 à 15h23 en réponse à: Mettre a jour une liste lors d'une modification de fichierHello Jean ,
Je pense que dans ce cas, le plus simple est d’ajouter une colonne de type recherche à ta bibliothèque de documents et de peupler celle-ci dans le flux que tu as déjà créé (avec une condition : si cette colonne est vide, on crée une ligne, sinon on modifie la ligne liée)
CommentID=qXxCndjd7HzKUa6, PostID=OiyxmNyMqBkAz64
-
Hello Jean-Rémy Gallapont ,
Il est possible de bypasser ce popup de consentement avec une commande PowerShel : Set-AdminPowerAppApisToBypassConsent (Microsoft.PowerApps.Administration.PowerShell) | Microsoft Learn
Par contre cela sera effectif pour tous les connecteurs utilisés directement ou indirectement (si l’app lance des flux power automate) par l’appli.
Il y a peut-être une solution plus simple : Tes guests, ne peuvent pas se connecter avec leur adresse car leur domaine est rattaché à Gmail, c’est donc logique qu’ils ne puissent pas créer une connexion Outlook avec un mail estampillé google.
Mais si tu leur fournis une licence Outlook, ils ont forcément un mail créé avec un domaine par défaut du type : @xxxxonmicrosoft.com
C’est avec cet identifiant qu’il faut qu’ils s’identifient à ton appli. Il faudra cependant veiller à bien mettre l’adresse gmail dans le replytoCommentID=WegHwbgdQBFFcZm, PostID=jChz3GoimZUHLU5
-
DavidZed
Membre1 octobre 2023 à 9h58 en réponse à: Contrôle de champs "texte" pour plaque d'immatriculationSuper ypicot !
J’ai toujours évité les regex autant que je le pouvais à case de cette syntaxe qui tient presque de l’incantation vaudou (et la doc MS learn est assez succincte sur ce volet). Merci car pour le coup, ta réponse démystifie plutôt bien le principe !
ça vaudrait presque un article dans la base de connaissances 🙂
SubCommentID=SzaZqjmzcX09H8w, CommentID=IBrEsTk6G2ibufk, PostID=erpIzqrXOw59kfW
-
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
-
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
-
DavidZed
Membre27 septembre 2023 à 6h14 en réponse à: Mettre a jour une liste lors d'une modification de fichierHello, non je n’ai jamais eu à procéder ainsi, généralement j’ajoute simplement des colonnes de métadonnées à la bibliothèque, cela permet la plupart des fonctionnalités des listes
SubCommentID=yKN81rvHt5igFuO, CommentID=QRKcIbzOAkNTtut, PostID=OiyxmNyMqBkAz64
-
DavidZed
Membre25 septembre 2023 à 15h03 en réponse à: Erreur sauvegarde collection vers liste sharepointC’est parce que ton Centre est une colonne de type recherche, il attend une valeur de type record enregistrement au format {Id : 45; Value:”Ablis Test”} (qui vont correspondre aux colonnes ID et Title de ta liste lié à cette colonne recherche.
L’idéal est de récupérer ce schéma sur ta liste déroulante ou ton combobox: ComboBox1.Selected (au moment ou tu collecte les réponses)
SubCommentID=9wYhjXrfpGiuSiJ, CommentID=KWptYou3iAwwDH7, PostID=ukZsywYt1asBB4K