Réponses céées sur le Forum

Page 70 sur 70
  • DavidZed

    Membre
    18 mai 2022 à 15h18 en réponse à: Bug sur le OnReset des composants

    Bonjour,

    Si tel est le cas, en attendant que ce soit fixé, il faudra certainement passer en mode en-US

    Si tu remplaces tes “;” par des “,”, comment se comporte le composant malgré l’erreur générée ?

    CommentID=eeCgbfAN8Nd9RXg, PostID=9lGn1AmopzMHsJk

  • DavidZed

    Membre
    18 mai 2022 à 10h37 en réponse à: Approbation sur partage d'application

    Bonjour,

    Il te faudra d’abord désactiver la possibilité de partager une application, pour ce faire, il faut modifier les autorisations du rôle de sécurité du propriétaire de l’appli (onglet personnalisation, ligne canvas, dernière colonne: share) dans le portail admin powerapps.

    Ensuite, pour l’apporbation, je pense que l’idéal est un flux cloud instant déclenché depuis l’appli.

    Le déclencheur est powerapp, il faudra passer en entry les guid de l’appli et de l’utilisateur à ajouter

    Pour modifier les droits il faut utiliser le connecteur powerapps for admins https://docs.microsoft.com/en-us/connectors/powerappsforadmins/ (Edit App Role Assignment as Admin)

    Une autre solution :

    Désactiver le partage des applications comme décrit plus haut

    Partager l’appli à un groupe M365 ou AAD (à faire en tant que sys admin)

    Gérer avec un flux power automate l’accès au groupe via un approval

    CommentID=m0J6jUgq2SQt4d0, PostID=6XoHfsg4qzAtZT4

  • DavidZed

    Membre
    16 mai 2022 à 7h52 en réponse à: Enregistrement de données

    Effectivement, si la collection contient beaucoup d’enregistrements, il peut y avoir un délai.

    Dans ce cas, la solution serait peut-être de lancer un contrôle timer de 1 ou 2 sec qui effectue le contrôle à chaque cycle et qui se relance tant que le countrows(source) n’est pas égal au countrows(collection). On peut également y adjoindre l’incrémentation d’une variable de contexte qui compterait le nombres de cycles pour stopper le timer à la Xeme tentative et proposer de renvoyer seulement à ce moment.

    CommentID=bGA0VssREq9jKpW, PostID=GStHvkqqB977fFG

  • DavidZed

    Membre
    16 mai 2022 à 6h49 en réponse à: Formulaire Plan de prévention

    Bonjour,

    Il est tout à fait possible dans une powerApps, de créer un formulaire aux questions dynamiques en jouant sur les propriétés des DataCard ex: Mettre dans le Visible des questions 1.1, 1.2 etc la fonction Réponse1=true

    Toutefois si tes questions sont uniquement de type : texte à renseigner, choix d’options / case à cocher, l’idéal serait peut être de passer par Form et de générer l’envoi d’un rapport des réponses via power automate, un exemple ici :

    CommentID=hMYZB9pvx4UuVr4, PostID=nqb4ZT1WDagvuhu

  • DavidZed

    Membre
    16 mai 2022 à 6h38 en réponse à: Enregistrement de données

    Bonjour,

    Dans une liste sharepoint, un enregistrement est normalement disponible en lecture dès lors qu’il a été créé (dans la seconde).

    S’il n’est pas visible dans SP, il est parfois nécessaire de faire un rafraichissement de la page

    S’il n’est pas visible dans une galerie de l’application powerapps, on peut forcer le rafraichissement de la source de données avec un refresh(source_de_données)

    si on passe par une collection, il faut ajouter le nouvel enregistrement à la collection ou la recharger

    Enfin, tu peux concevoir un power automate pour envoyer une notification mail au créateur de l’enregistrement avec un déclencheur de type : “Quand un nouvel élément est créé”

    CommentID=qX7JYULSDAOWBzX, PostID=GStHvkqqB977fFG

  • DavidZed

    Membre
    15 mai 2022 à 18h55 en réponse à: Transfert de données d'une database vers une autre database

    Bonjour,

    avec une liste sortie stock qui a pour colonnes :

    → Article (recherche vers liste des stocks)

    → Chantier (texte)

    → Quantité sortie (nombre entier)

    Dans ton appli, tu crées dans ton écran de confirmation “sortie” :

    → Dans le bouton sortie que tu as déjà créé dans ta galerie, tu stockes le record sélectionné dans une variable:

    UpdateContext({SelectedArticle:ThisItem})

    Si la confirmation se fait sur un nouvel écran, il te faudra plutôt passer la variable dans le navigate:

    Navigate(‘Ecran confirmation’;ScreenTransition.Fade;{SelectedArticle:ThisItem})

    → un textinput_CH dans lequel l’utilisateur saisira le nom du chantier

    → un textinput_QT dans lequel l’utilisateur saisira la quantité sortie

    → un bouton “confirmer la sortie de stock” avec sur le onselect :

    // Création d’un enregistrement dans la liste sortie stocks

    Patch(‘Sortie Stock’;Defaults(‘Sortie Stock’);{Article:{ID: SelectedArticle.ID;Value:SelectedArticle.Title};Chantier:textinput_CH.Text;’Quantité sortie’:Value(textinput_QT.Text)})

    ;;

    //Mise à jour de la quantité disponible dans la liste stock

    Patch(Stock;SelectedArticle;{QT_Stock:SelectedArticle.QT_Stock – Value(textinput_QT.Text)})

    Ensuite tu fais la même chose pour les entrées sans oublier de remplacer le “-” par un “+” dans le recalcul du stock dispo

    CommentID=DlGLNadbKJ8qRhJ, PostID=SH3kp7Fu65Urt08

  • DavidZed

    Membre
    15 mai 2022 à 17h05 en réponse à: Mise à jour de plusieurs enregistrements

    Salut, le problème vient de ton patch dans ton ForAll, dans le paramètre record,

    ForAll(Temp;
    Patch(T_Liste_VEH;LookUp(T_Liste_VEH;Num_VEH = Num_VEH)
    {VehDisponible:true})
    )

    A cet endroit, tu es censé faire le lien entre le record de ta collection que tu es en train d’évaluer dans ton Forall et le record correspondant dans ta source de données.
    Or il y a deux soucis dans ta formule :

    → ton lookup() ne se base que sur des données de la source de données, techniquement, chaque itération du forall devrait patcher le 1er record de la liste

    → il n’y a pas de “;” pour séparer l’argument record de l’argument modification de ton patch (2eme et 3eme arguments). Donc je pense que ton patch ignore totalement le lookup et interprete ton 2eme argument comme la modification: à chaque itération du for all, il patch tous les records de ta list pour leur mettre {VehDisponible:true}

    J’ai mal compris ton besoin dans mon premier post, tu n’as pas besoin de mettre le filtre dans le forall:

    Forall(Temp;Patch(T_Liste_VEH;Thisrecord;{VehDisponible:true}))

    CommentID=xrE4PzqADfDDuJB, PostID=DvDmlANkdWsNjSD

  • DavidZed

    Membre
    14 mai 2022 à 17h25 en réponse à: Mise à jour de plusieurs enregistrements

    Bonjour,

    Il te faut mettre ton test logique true/false dans un filter sur la source de ton forall:

    Forall(Filter(Temp;VehDisponible=true);Patch(T_Liste_VEH;Thisrecord;{Num_VEH:ThisRecord.Num_VEH}))

    Ce qui donne en gros :

    Pour tous les enregistrements de ma collection “Temp” qui ont la valeur disponible=true, met à jour l’enregistrement correspondant dans ma source de données “T_liste”

    Si ca ne marche toujours pas, il faudra peut-etre insérer un remove column(*ton filtre*;”VehDisponible:true”) toujours dans la source du forall

    CommentID=COT3xNCASc7ABtU, PostID=DvDmlANkdWsNjSD

  • DavidZed

    Membre
    14 mai 2022 à 9h25 en réponse à: %ages dans collection

    Pour le filter, tu peux également séparer les tests logiques par un “;” c’est équivalent à un “&&”

    Pour ta collection, j’ajouterais un ForAll(Patch( après ton clear collect, du style:

    ForAll(col_activite;Patch(col_activite;ThisRecord;{PERC_ACT:100/sum(col_activité;SUM_HR)*ThisRecord.SUM_HR}))

    Il y a peut être possibilité d’optimiser en utilisant un with( avant ton clear collect pour charger tes records et faire les calculs directement dans le clearcollect, à tester

    CommentID=LLKf8j2PmVUhNIo, PostID=LYtw9tB08ujCDrq

  • Bonjour,

    Oui, impossible d’afficher plus de 2000 éléments
    L’idéal est de faire passer par une collection avec des contrôles de filtres (délégables) à renseigner obligatoirement pour s’assurer que la requête fasse moins de 2000 éléments

    CommentID=7WB3Bo5tK3dycnS, PostID=n1fwKtoJnmfOwlx

  • DavidZed

    Membre
    13 mai 2022 à 14h05 en réponse à: Adapter l'écran de l'application selon le support d'ouverture

    Bonjour,

    Une solution qui a marché pour moi :

    Mettre l’app en format téléphone / Portrait dans les paramètres de l’app

    Désactiver la mise à l’échelle

    Désactiver le verrouillage de l’orientation

    CommentID=QMhqGqZPm75d27B, PostID=ftZwKSf20oqbtPc

  • DavidZed

    Membre
    13 mai 2022 à 13h47 en réponse à: PowerApps + gestion des droits SharePoint

    Hello,

    Tu peux passer par un flux power automate qui lance un processus d’aprovals quand un nouvel élément est ajouté à ta bibliothèque

    L’idéal est d’ajouter une colonne avec un statut choice (approuvé/en attente d’approbation/rejeté) qui peut te servir pour :

    – shunter l’approval pour certains utilisateurs en mettant directement le statut à approuvé pour ceux qui ont ce droit
    -De filter les documents pour n’afficher que les docs approuvés dans SP et dans l’app

    Tu peux renseigner dynamiquement l’approbateur dans power automate de plusieurs manières (le N+1 de la personne qui lance le flow) par ex)

    CommentID=LltiNI1v3oIiRbg, PostID=AKCH22hyVF329nb

  • DavidZed

    Membre
    14 mai 2022 à 17h32 en réponse à: Disposition dynamique des contrôles dans une galerie

    Bonjour,

    On voit sur votre screenshot que vous avez des labels en guise d’entête au dessus de la galerie.

    Il y a une astuce très simple qui consiste à donner aux labels / controles de la galerie les .X .Width et .Visible de vos labels d’entêtes (idéalement placés dans un container avec certains en largeur automatique pour rendre le tout responsive)

    SubCommentID=4TXTaHFE14Sq2wy, CommentID=5Hif9QLncoPmExK, PostID=JpdiSxMTtbDOb5f

  • Pour que cela fonctionne, il faut s’assurer que la requête est bien délégable : Si une partie de la formule est soulignée de deux traits bleus, cette partie de la fonction n’est pas délégable et du coup ne se fera que sur les 2000 premiers éléments de la table.

    La solution citée plus haut peut également fonctionner, il peut être intéressant de mettre les différents collect dans un concurrent() afin d’accélérer le temps de chargement de la requête.

    Pour les temps de chargement de collections qui dépassent la seconde, ajouter un loadingspiner.Data au Screen peut adoucir la perception de ce temps de requête pour l’utilisateur

    SubCommentID=VFeM8mdIY9erP3j, CommentID=zejUCbkgmb5MxIO, PostID=n1fwKtoJnmfOwlx

Page 70 sur 70