R3dKap
Expert Power AppsRéponses céées sur le Forum
-
R3dKap
Membre21 février 2022 à 12h42 en réponse à: Enregistrement du "Screen" en PDF dans une liste SharepointBonjour @Hugotr35,
Il faudrait que tu précises ce que tu veux dire par “un écran de l’arborescence“… Passke là je vois pas très bien… 😉
CommentID=H1SlSnIZYzDsPkn, PostID=ofR9qnVxIcg8WY2
-
Les 2 colonnes tu veux dire… Attention aux mots utilisés… 😉
C’est là qu’est le problème du coup. Il faut que tes 2 colonnes aient le même nom interne dans tes 2 listes. Je te suggère de carrément supprimer les 2 colonnes N° Lot dans tes 2 listes et de les recréer en suivant la procédure indiquée sur cet article au paragraphe Création des colonnes :
A la première étape, nomme-les scNumeroLot et à la 2ème étape, donne-leur le libellé N° Lot. Puis met à jour les sources de données dans ton appli et reteste…
CommentID=IwcRrGaXWmT7tu9, PostID=SVOMKheaWphWjFu
-
R3dKap
Membre21 février 2022 à 12h12 en réponse à: Lier des éléments de deux listes à leur création@Alexandre @Lo
Il n’existe pas à proprement parler une documentation qui liste ce genre de choses. C’est plus un feeling basé sur l’expérience. Mais maintenant que j’y pense ça pourrait être intéressant que je pose la question à l’équipe Power Apps chez MS pour qu’ils me donnent quelques billes sur la mécanique interne d’exécution et de traitements des formules dans les applications de canevas.
Je me base aussi sur le fait, par exemple, qu’il existe une option qui permet de désactiver l’exécution du App.OnStart en parallèle des autres événements de lancement d’une application :
👉 D’une manière générale, les formules sont quand-même traitées en séquence. Sinon on aurait de grave soucis lorsqu’il y a des dépendances entre variables par exemple. Et d’ailleurs, c’est pas pour rien non plus qu’il existe une fonction Concurrent() qui sert précisément à paralléliser les traitements (ce qui laisse sous-entendre que le reste est séquentiel).
Par contre, il y a quelques cas particuliers :
-
Le SubmitForm() justement… En règle général on ne met pas de code après le SubmitForm() car là, pour le coup, le système n’attends pas que le formulaire soit entièrement soumis pour continuer à traiter un éventuel code qui suivrait juste derrière. Pourquoi ? Justement parce qu’il y a un événement OnSuccess qui est là pour garantir la fin de la soumission du formulaire. Donc, en toute logique, s’il y a un traitement à faire après la soumission d’un formulaire, il doit être placé dans le OnSuccess.
-
Le Navigate() : comme pour le SubmitFormt() normalement on ne met pas de code après le Navigate() car on indique à Power Apps que l’on veut changer d’écran : si l’on veut changer d’écran pourquoi mettrions-nous encore du code juste après le Navigate() -> ça n’a pas de sens. Tout code situé après un Navigate() doit donc être placé dans le OnVisible de l’écran cible. Clairement, je pense que lorsque Power Apps voit une instruction Navigate() il navigue immédiatement et n’attends pas qu’un éventuel bout de code derrière le Navigate() soit entièrement exécuté pour changer d’écran.
-
L’appel de flux Power Automate : là c’est particulier car cela dépend si à la fin du flux il y a l’action suivante :
-
Si le flux se termine par cette action alors Power Apps attends la fin de l’exécution du flux pour continuer le code qui se situe après l’appel du flux. Dans le cas contraire, l’appel du flux ne fait que déclencher le flux et Power Apps poursuit l’exécution de l’application dans la foulée avant même que le flux n’aie terminé de s’exécuter.
Voilou… 🙂
CommentID=lzLXw1GYPx9MAt5, PostID=YZsSIl0iuKjZa8u
-
-
Salut @Sylvain,
J’avais rédigé une procédure là-dessus il y a quelques temps… 😉
Perso je l’ai utilisée pour charger la liste des communes de France, soit quelques 36 000 lignes… 😊
CommentID=EUirIRZnNlivZxg, PostID=8xboLeQO9HZONn1
-
Ah j’avais pas fait attention que tes 2 Filters() se font sur des listes différentes : la première sur ‘1 – Saisie en cours / Moulage’ et la deuxième sur ‘1 – Saisie en cours / Thermix’.
Est-ce que ces 2 listes ont une colonne ‘N° Lot’ avec exactement le même nom technique N_x00b0_Lot ?
CommentID=w4P6hLQmlzYilRz, PostID=SVOMKheaWphWjFu
-
Ok. Fait le petit test suggéré et dis-nous ce que ça donne…
Autres questions…
-
Est-ce qu’il y a un truc particulier dans ta liste CLIENT ? Des colonnes de types particuliers ?
-
Ta colonne Nom_client dans DOCS_CONTRAT n’est pas en sélection multiple ?
CommentID=iJGX8AAVtoxIrhU, PostID=gJKm7ARcFsnReom
-
-
Salut @Zliga,
Question 1
-
Qu’est-ce que tu as dans le Items de ta combo box ?
-
Ta colonne NomOffre est bien de type texte ?
Question 2
C’est normal que ça n’enregistre pas. Il faut toujours faire attention au format des données. Ta colonne TypePresta est une colonne de lookup donc sa structure est la suivante :
{n Id: ...,n Value: ...n}
Il faut absolument respecter cette structure si tu veux enregistrer une donnée dans cette colonne. Or, le Filter() que tu as mis dans Items renvoie des éléments de ta liste ‘Catalogue Offres Prestations’ dans lequel tu vas retrouver toutes les colonnes de ta liste SharePoint alors que ton champ TypePresta n’attends que les 2 colonnes Id et Value. Donc ça ne peut pas marcher.
Pour solutionner ton problème, il faut que le résultat renvoyé par ton Filter() soit de la même structure que ta colonne TypePresta. On va donc y appliquer un ShowColumns() pour ne garder que les colonnes ID SharePoint et la colonne vers laquelle pointe TypePresta (on va dire que c’est Title) :
ShowColumns(n Filter(n 'Catalogue Offres Prestations',n Title=Concat(n DataCardValue124.SelectedItems.Value,n Valuen )n ),n "ID",n "Title"n)
Mais du coup, ça ça va renvoyer une table avec 2 colonnes ID et Title. Or TypePresta il lui faut Id (avec le “d” minuscule) et Value.
Donc on va renommer les colonnes avec RenameColumns() :
RenameColumns(n ShowColumns(n Filter(n 'Catalogue Offres Prestations',n Title=Concat(n DataCardValue124.SelectedItems.Value,n Valuen )n ),n "ID",n "Title"n ),n "ID",n "Id",n "Title",n "Value"n)
Et voilà…
CommentID=UWd93iQ6YsvSD3F, PostID=yW6sfaYCRTfDPFY
-
-
Ah je vois… C’est juste après avoir choisi Client dans Liste ou Bibliothèque contenant la valeur du filtre que la page mouline ? Dès que tu choisis Client y’a plus rien qui répond c’est ça ?
Suggestion : crée une mini-liste de test dans laquelle tu rajoutes une colonne de recherche qui pointe sur ta liste CLIENT (comme tu l’as fait dans la bibliothèque). Et ajoute cette liste de test à la page et essaie de la connecter à ton web part CLIENT… C’est histoire de voir si ça vient plutôt de CLIENT ou de la bibliothèque…
CommentID=DOcyT5chw1joeRu, PostID=gJKm7ARcFsnReom
-
R3dKap
Membre17 février 2022 à 17h02 en réponse à: Export / Import de solution contenant un connecteur customiséOuf ! J’aurais jamais trouvé ! Merci pour la réponse 🙏😊
CommentID=RSCjEi8vVLUkSi6, PostID=YQozd2R3eW5rgru
-
Ok… Donc la colonne de recherche Nom_client dans DOCS_CONTRAT pointe vers la colonne Raison sociale de CLIENT (qui est en fait Title renommé).
Du coup, lorsque tu fais le lien entre la liste et la bibliothèque de documents, il faut mettre Raison sociale dans Colonne contenant la valeur du filtre. Sinon ça ne marchera pas…
Est-ce bien le cas ?
CommentID=Ky7Qr4RycsMOY3u, PostID=gJKm7ARcFsnReom
-
R3dKap
Membre17 février 2022 à 15h40 en réponse à: Export / Import de solution contenant un connecteur customisé@Fred Deligne, est-ce qu’avant d’exporter ta solution tu as bien supprimé la valeur de tes variables d’environnement comme prévu par la bonne pratique Microsoft ?
CommentID=ZKi2yOLNJQvWA1z, PostID=YQozd2R3eW5rgru
-
R3dKap
Membre17 février 2022 à 15h38 en réponse à: Lier des éléments de deux listes à leur créationSalut @Delphine,
Effectivement c’est un problème d’enchaînement des instructions. Contrairement à ce que beaucoup de citizen devéloppeurs pensent, Power Apps n’attend pas la fin de l’exécution d’une instruction pour passer à la suivante… En gros, y’a pas mal de choses qui se passent en parallèle. Et c’est encore plus vrai pour le SubmitForm().
Dans ton cas, ce qu’il faut faire c’est soumettre le formulaire de la fiche de suivi uniquement une fois que la soumission du ticket est terminée.
Pour cela, il suffit que tu utilises la propriété OnSuccess de ton formulaire de Tickets, dans lequel tu mettras ton
SubmitForm(FormSuiviTicket)
.L’utilisation du OnSuccess est capital lorsque l’on utilise des formulaires. Il garantit que l’élément de liste a bien été créé ou mis à jour. Et donc son identifiant (via le LastSubmit) est bien disponible.
Voilou… Tiens-nous au courant… 😉
CommentID=J7VpecO9SKod6cK, PostID=YZsSIl0iuKjZa8u
-
Salut @jonathan schulz,
C’est normal : tes 2 filtres renvoient des données qui n’ont pas la même structure…
Le premier Filter() de ton If() renvoie des éléments de ta liste ‘1 – Saisie en cours / Moulage’.
Ton 2ème Filter() renvoie une liste de lots car tu as mis “.Lot” derrière ton Filter().
Il faut que tes Filter() renvoient des données qui ont la même structure…
Par exemple si tu enlèves le “.Lot” après le 2è Filter() ça devrait rentrer dans l’ordre…
CommentID=Sc3gwEvhrtovwXl, PostID=SVOMKheaWphWjFu
-
Salut @Xavier NOEL-BRIAND,
Je viens de faire le test chez moi dans les mêmes conditions et ça fonctionne bien.
Quelques pistes pour essayer de trouver l’origine du pb :
-
Quel est le volume de DOCS_CONTRAT ? Combien de documents au total ?
-
La colonne Nom_client dans DOCS_CONTRAT est bien un champ de recherche vers la liste CLIENT ? Vers quel champ de la liste CLIENT ?
-
La colonne Nom_client dans CLIENT est de type texte ?
CommentID=KASoCFwFYxY7OaX, PostID=gJKm7ARcFsnReom
-
-
Ok, je vois… Je pense que ça serait faisable avec la mise en place d’une passerelle comme précisé précédemment, mais (sauf erreur de ma part) il faudra vous acquitter d’une licence pour chaque utilisateur de l’application.
CommentID=jWcsA9zO4xYdx47, PostID=q2g7J3Yj7fGX9y9