

Delphine
MemberForum Replies Created
R3dKap merci pour ton retour.
Alors, on est juste au début pour ce type d’enregistrement sur application, et je préfère reprendre à zéro mon modèle de données pour partir sur des bases saines plutôt que me retrouver bloquée dans plusieurs mois parce que je veux ajouter encore quelque chose ou que j’ai besoin d’un autre type de rapport (par CodeProduit par exemple)
Je pense que je construis mes listes comme des tableaux Excel, alors qu’il faudrait que je raisonne plus en mode “table” avec effectivement des liens entre chaque.
Si je comprends bien, il me faut 4 listes
liPointsdeControles : qui reprend la liste de mes postes de travail ou sont réalisés les contrôles (magasin, atelier1, atelier2, atelier3, expédition)
liCriteres : qui liste tous les points qui seront contrôlés (couleur, épaisseur, masse, taille, ….)
liCriteresControle : qui liste les criteres (couleur, épaisseur, …) à contrôler à chaque poste (magasin, atelier1, …) -> J’ai un peu de mal à la visualiser celle-ci
liResultats : connectée à l’application qui récupère les résultats -> tu verrais ça sous quelle forme ? 1 ligne = 1 point de contrôle avec le PointControle (magasin, …), le Critere (couleur, …), le Résultat (oui/non) et mes autres éléments (CodeProduit, Date, NumProd, …) mais du coup je perds mon info SommeDefaut et Taux Defaut sur une ligne (qui doit dans le futur déclencher une alerte en cas de dépassement en fait).
CommentID=lrOXqxRBIrZ4tA6, PostID=h9tWwTqhOvUkZFM
Il est bien possible que je me complique la vie pour pas grand chose 😂 L’idée c’est bien d’envoyer quotidiennement un recap’ des résultats du jour par mail, puis de générer un rapport mensuel en PDF.
Donc oublions la technique, voilà ce le besoin global
Tous les jours, des opérateurs utilisent une application pour noter des contrôles fait sur des productions.
A chaque poste de travail, les critères de contrôles ne sont pas les mêmes (et ces critères de contrôle sont susceptibles de varier en cours d’année selon ce qui aura été observé sur le terrain).
Pour faire ça, j’ai créé deux Listes SharePoint
Une première liste “liPointsControles” qui se présente ainsi
Title (qui est sous la forme PointControle-NumCritere)
PointControle (liste de choix avec les postes de travail)
NumCritere (un texte qui devait servir à “matcher” les données de type Critere1, Critere2, Critere3,… CritereX)
LibelleCritere (un texte qui donne le critère à contrôler)
Une deuxième liste “liResultatsControles” qui récupère les données d’une application et qui contient les éléments suivants
Title (qui est sous la forme Date-NumProd-CodeProduit)
Date (date d’enregistrement du contrôle)
NumProd (texte qui reprend un code de production interne)
CodeProduit (texte qui reprend un code produit interne)
NbProduits (nombre de produits fabriqués)
Critere1 (nombre de défauts pour ce critère de contrôle)
Critere2 (nombre de défauts pour ce critère de contrôle)
… CritereX (nombre de défauts pour ce critère de contrôle)
SommeDefauts (colonne calculée qui fait la somme des nombres dans les colonnes Criteres)
TauxDefauts (colonne calculée a partir de SommeDefaut et NbProduits)
Une application, avec juste un formulaire tout simple basé sur liResultatsControles ou chaque enregistrement va générer une ligne avec les informations qui vont bien. J’ai utilisé la liste liPointsControles pour mes libellés d’étiquettes pour remplacer Critere1, Critere2, …
(Le but étant de pas reprendre l’application quand on modifie un critère de contrôle)
Jusqu’ici tout fonctionne très bien.
Nous souhaitons mettre en place des rapports automatisés.
Rapport journalier
J’ai mis en place un flux quotidien, qui récupère les contrôles faits dans la journée sur la liste liResultatsControles (avec un filtre oData sur la date)
Ces contrôles sont injectés dans un tableau HTML, pour cela, j’ai procédé de cette façon
J’ai initialisé une variable integer appelée Dlig à 0
J’ai initialisé une variable string appelée TableHTML avec le code suivant
<table style="border:1px solid #eeeeee;border-collapse: collapse;" border="1" cellspading="0" cellspacing="0"> n<thead style="background:#1C6EA4; border-bottom: 2px solid #444444; font-size: 15px; font-weight:bold; color:#FFFFFF;">n<tr>n<th width="250">Numéro de prod</th>n<th width="250">Code produit</th>n<th width="250">Nombre de produits</th>n<th width="250">Nombre de défauts</th>n<th width="300">Taux défaut</th>n</tr>n</thead>n<tbody>
Ce qui me créé une “carcasse” de tableau HTML.
Ensuite j’ai créé une boucle sur mes contrôles récupérés, cette boucle :
Incrémente Dlig de 1
Ajoute à la variable TableHTML les infos suivantes
<tr style="background-color:@{if(equals(mod(variables('Dlig'),2),0),'white','#e1e1e1')};">n <td>@{items('Appliquer_à_chacun')?['NumProd']}</td>n <td>@{items('Appliquer_à_chacun')?['CodeProduit']}</td>n <td>@{items('Appliquer_à_chacun')?['NbProduits']}</td>n <td>@{int(items('Appliquer_à_chacun')?['SommeDefaut'])}</td>n <td>@{int(items('Appliquer_à_chacun')?['TauxDefaut'])}</td>n</tr>
Ce qui intègre proprement mes données dans un tableau HTML mis en forme (le int() des deux dernières lignes me permet de garder qu’un nombre entier).
J’envoie ensuite un mail en intégrant ma variable TableHTML
Tout ça fonctionne bien, mais je voudrais ajouter à mon mail, le détail des défauts qui sont détectés (pour les productions où il y a des défauts).
Et là, on retrouve le tableau que j’essaie de construire qui matcherait les résultats de liResultatsControles mais en remplaçant mes colonnes Critere1, Critere2, … par ce que j’ai en liPointsControles
L’idée étant de refaire un autre Tableau HTML sur le même principe, mais en filtrant mes contrôles non seulement sur la date, mais aussi sur la présence de défauts.
Comme ça, je rajoute ce tableau qui contient un peu plus de détails, sous le premier.
Rapport mensuel
J’ai pas encore beaucoup réfléchi dessus, mais il contiendra certainement les mêmes éléments, avec sûrement quelques informations supplémentaires type “Poste de Travail” voire des graphiques.
Je pense que je les ferai via Excel puis un enregistrement PDF pour avoir un truc propre.
Mais si t’as des idées, je prends.
CommentID=9yMv5cMHxREzYUR, PostID=h9tWwTqhOvUkZFM
Toujours aussi prompt pour nous aider 👍
Alors pour la construction de ma Table1, j’ai d’abord initialiser une variable array vide appelée Table1, je fais une boucle sur une liste SharePoint appelée LiCritere filtrée, et pour chaque élément, j’ajoute à ma variable Table, deux valeurs string issues de ma liste SP
[
{ “Libelle”:@{items(‘Pour_chaque_critere’)?[‘LibelleCritere’]};
“Zone”:@{items(‘Pour_chaque_critere’)?[‘ZoneCritere’]}}
]
Cette partie là fonctionne (je me suis envoyé le résultat par mail sous forme de chaîne de caractère, ça me donne un truc de ce genre :
[ {“Libelle” : Libellé1; “Zone” : Zone 1} ];[ {“Libelle” : Libellé 2; “Zone” : Zone 2} ]
(En tapant ce message j’ai l’impression d’avoir tout pris à l’envers, je vais donc plutôt expliquer ce que je veux faire)
J’aimerais construire une deuxième table, appelons la Table2 qui ressemblerait à ça :
Nom / Title1 / Title2
Libellé1 / valeur11 / valeur21
Libellé2 / valeur12 / valeur22
….
Ma première colonne correspond à ce que j’ai récupéré dans ma Table1.
Pour les autres colonnes, je dois récupérer les éléments d’une autre liste SP appelée liResultats, qui se présente comme ça
Title / Critere1 / Critere 2 / ….
Title1 / Valeur11 / Valeur 21
Title2 / Valeur 21 / Valeur 22
J’ai autant de colonne CritereX que de lignes dans ma Table1 (je peux pas juste mettre leur “Libelle” en intitulé de colonne car ils varient régulièrement et j’utilise ce montage (les libellés dans une liste et les résultats dans une autre avec mon appli PowerApps).
Je sais pas si c’est très clair.
CommentID=TS3GZdgLbO1I774, PostID=h9tWwTqhOvUkZFM
Ca marche, je vais faire ça.
Merci en tout cas 😉
CommentID=XxVAkYFeykf55SO, PostID=69xGZf5mtO7DGrg
@R3dKap pardon je me suis mal exprimée, les autres applications M365 fonctionnent bien (SharePoint, Outlook, …).
Ce sont toutes mes applications PowerApps que je ne peux plus modifier.
Niveau chargement, on dirait que ça bloque ici
CommentID=khdzy3uoGRvmxU2, PostID=69xGZf5mtO7DGrg
@R3dKap tout est ok ici (en dehors des incidents Microsoft mais rien concernant PowerApps). J’ai pas forcément de ralentissements sur les autres applications (SharePoint fonctionne très bien par exemple).
Je vais tenter le nettoyage du cache et le redémarrage.
Pour le dernier point, je ne pense pas (je fais partie du “”service informatique””, avec de gros guillemets car je ne m’occupe que d’une toute petite partie mais pas de modifications faites là dessus à ma connaissance).
Merci
CommentID=WIQxV9n66iOtLEE, PostID=69xGZf5mtO7DGrg
Salut @R3dKap
Il s’agit des emplacements que l’on peut ajouter à “Ce PC” :
Et il suffit de copier l’adresse du site / bibliothèque :
Le site / bibliothèque apparaît ensuite sous forme de dossier (avec l’arborescence), c’est pour aider certains de nos collaborateurs à appréhender l’outil SharePoint facilement.
Pour la synchronisation des bibliothèques, j’ai testé les 2 possibilités :
Synchroniser : en cas d’ouverture des documents sur deux postes, le dernier utilisateur à l’ouvrir est en lecture seule / consultation.
Ajouter le raccourci à OneDrive : je peux pas glisser des documents / créer des dossiers directement dans le dossier (ça me génère une erreur de synchronisation OneDrive).
L’emplacement réseau combine ces deux possibilités. Après ce n’est pas impossible qu’il y ait quelque chose que je ne fasse pas correctement. 😀
CommentID=Rc44dJkuzJdBWy2, PostID=6hzw07qk5BIg5w0
Delphine
Member18 février 2022 at 8h39 en réponse à: Lier des éléments de deux listes à leur créationSalut @R3dKap
Encore une fois, un grand merci. Je n’avais pas pensé à utiliser le OnSuccess.
Tout fonctionne parfaitement
CommentID=p0TFh90Wbn67Rq9, PostID=YZsSIl0iuKjZa8u
@R3dKap Effectivement, je n’avais pas pensé à cet aspect sécurité. Je suis donc preneuse de ta solution de contournement (si réalisable par une novice 😀 )
CommentID=vVeqaKVXgTNwfd8, PostID=xvt4oAo3KpTyzJx
Bonjour @R3dKap
Je vais creuser un peu mais je suis pas certaine que ça correspondent à ce que je souhaite faire. Pour la liste des services ou des sociétés, ça me parait bien adapté effectivement.
Mais par exemple ma liste salariés, il faut que ça reste facile de créer un nouveau salarié pour le service RH (avec une liste, un formulaire personnalisé, je suis sûre que les infos sont correctement saisies).
Une fois les infos mises dans cette liste, elle peut ensuite être utilisée dans l’ensemble de mes sites :
Création de courrier type qui reprend juste nom / prénom / adresse de la liste salarié
Récupération des infos nom / prénom / poste / ancienneté pour le suivi des accidents de travail (donc une nouvelle liste avec des infos en lookup une fois le salarié sélectionné)
Récupération du nom / prénom / service / responsable pour transmission de la demande de congés (donc là aussi une nouvelle liste avec des infos en lookup une fois le salarié sélectionné + publipostage)
…
Pour ça, je vois pas trop comment les métadonnées gérées peuvent m’aider (ou alors j’ai raté un gros truc dans leur fonctionnement, ce qui n’est pas impossible).
CommentID=fbjjUQ6rx2zUaaf, PostID=xvt4oAo3KpTyzJx
Après essais, ça semble correspondre à mon besoin et c’est plutôt simple à la mise en œuvre (je vais cherche le title de ma ListeInitiale avec une combobox et je balance ensuite les infos des colonnes qui m’intéressent dans les cases du formulaire de mes listes / bibliothèques). 👍
Je vais même pouvoir automatiser ma codification de documents, ce qui était impossible avec les colonnes en lookup qui ne peuvent pas être prise en compte pour les valeurs calculées. 😀
(Ca parait sûrement pas grand chose pour des experts mais il faut savoir que j’ai découvert Sharepoint et PowerApps il y a 3 mois et que je suis pas de formation informatique à la base)
CommentID=4GR2ILfpP6LIyHm, PostID=xvt4oAo3KpTyzJx
C’est ce que je craignais.
Pour les métadonnées je vois l’idée mais c’est vraiment la partie lookup qui m’intéresse dans ce cas.
Dans ce qui est prévu pour le moment
Gérer des affichages personnalisés en fonction de ses différents éléments (classement par filiale, par client, par service, …)
Programmer les flux d’approbation des documents, en fonction de la société et du service sélectionné, d’envoyer la demande à la bonne personne.
Programmer divers workflows (demande de congés, note de frais, …) qui font appel à des validations de responsables qui seraient stockés dans des listes.
Gérer des listes communes (clients, personnel, …) entre les différentes filiales en évitant la re-saisie et les risques d’erreurs (exemple, en cas de changement d’adresse d’un client, le service Commercial met à jour sa liste client et l’info est reprise automatiquement au service Facturation quand celui-ci doit édité un document avec l’adresse du client).
Utiliser les listes en cascade dans les formulaires personnalisés et les applications qui sont prévues dans notre déploiement.
Pendant que j’écris ce message, je viens de penser à quelque chose. Je pourrais aussi utiliser tout simplement des formulaires personnalisés pour mes bibliothèques / listes qui vont piocher l’info qui va bien dans mes listes initiales.
CommentID=AYBjJ8SrIujQxJF, PostID=xvt4oAo3KpTyzJx
Je me réponds à moi-même si ça peut aider quelqu’un.
J’a décidé de partir sur des affichages paramétrés et des composants webparts. Ca permet de donner la visu sur la bibliothèque source, uniquement sur les fichiers que je souhaite, et toujours la bonne version.
C’est assez transparent pour l’utilisateur grâce aux webparts et en bloquant l’accès aux affichages personnels.
CommentID=2vxjEKQugObWlol, PostID=Akp6qN5UQERfIHs