Bonnes pratiques pour construire ses listes SharePoint (pour Power Apps ou autres)

  • Bonnes pratiques pour construire ses listes SharePoint (pour Power Apps ou autres)

    Posté par R3dKap sur 4 octobre 2023 à 8h18

    Il y a quelques années j’avais rédigé un long article détaillant toutes les étapes et les bonnes pratiques pour la création propre de listes SharePoint, par exemple en vue de les utiliser dans une application Power Apps (mais cela était valable de manière générale).

    Malheureusement le prestataire qui propulsait mon site l’a (un peu violemment) supprimé et son contenu est donc définitivement perdu.

    J’ai néanmoins pris un peu de temps pour récapituler ici l’essentiel en l’agrémentant des quelques schémas que j’avais utilisé à l’époque et que j’avais heureusement conservé.

    Architecture

    Même s’il est possible de créer une liste vide et de lui ajouter des colonnes en quelques clics grâce à la nouvelle interface moderne de SharePoint, je passe très rarement par cette méthode pour créer mes listes si elles ont vocation à intégrer un vrai modèle de données servant par exemple à une application Power Apps.

    La bonne pratique veut que l’on suive l’architecture suivante :

    Les étapes :

    1. On crée les colonnes de site
    2. On crée les types de contenus (vides)
    3. On ajoute les colonnes de site aux types de contenus
    4. On crée les listes (vides)
    5. On ajoute les types de contenus aux listes

    J’ouvre une parenthèse… (

    👉 On me remonte souvent la question : A quoi servent les types de contenus finalement ? Est-ce qu’on est vraiment obligés de passer par des types de contenus pour mettre des colonnes dans des listes ? Est-ce que je peux pas simplement créer mes colonnes directement dans les listes ?

    Techniquement la réponse est : OUI. Il est tout à fait possible de créer ses colonnes soit directement dans une liste, soit en tant que colonne de site (voir l’explication de la différence ci-dessous) que l’on ajoute ensuite dans la liste.

    Ceci étant dit, le type de contenu a 2 intérêts principaux :

    1. Il est réutilisable à l’infini : un type contenu peut être utilisé dans plusieurs listes différentes. Comme c’est lui qui porte les colonnes, l’ajouter à une liste ajoute automatiquement les 20 colonnes qu’il porte en tant que colonnes de listes et tout ça en un clic ! Et donc, modifier un type de contenu c’est impacter automatiquement toutes les listes qui l’utilisent !
    2. Il est combinable à d’autres types de contenus sur une même liste ! Et on se retrouve alors avec une liste “polymorphe”. Par exemple une liste Intervenants avec un type de contenu Enseignant et un type de contenu Chercheur, chacun d’eux possédant ses propres colonnes ou des colonnes communes entre les 2. Lors de la création d’un enregistrement dans une liste de ce type on choisit alors préalablement s’il l’on veut créer un intervenant de type Enseignant ou de type Chercheur et les champs du formulaire natif SharePoint s’adaptent selon le type de contenu choisi. Cela ouvre pas mal de possibilités.

    Au-delà de ces intérêts, il y a simplement le fait que le type de contenu participe à une structuration claire d’un “modèle de données” dans SharePoint. Et il y a aussi qu’historiquement le type de contenu était par exemple le seul moyen qui permettait d’ordonner les champs du formulaires (alors que maintenant, nativement cela est possible directement sur le formulaire).

    Pour ce qui est des listes SharePoint utilisées dans le cadre des applications Power Apps, il n’y a évidemment pas d’obligation à avoir des types de contenus dans vos listes. A vous de voir…

    …je referme la parenthèse )

    Création des colonnes de site

    A contrario d’une colonne de liste (créée directement dans une liste), une colonne de site est globale à l’ensemble du site et peut être utilisée dans plusieurs listes sur ce même site.

    La création des colonnes de site est accessible à partir de la page des paramètres du site :

    • Rendez-vous sur la page Contenu du site
    • Cliquez sur Paramètres du site
    • Cliquez sur Colonnes de site

    C’est là que vous devez créer TOUTES les colonnes dont vous allez avoir besoin dans votre modèle de données.

    TRES IMPORTANT >> La création d’une colonne dans SharePoint s’effectue toujours en 2 étapes :

    1. Je crée la colonne avec son nom technique, sans caractères spéciaux (pas d’espace, pas d’accents ; uniquement a-z, A-Z, _ et éventuellement 0..9)
    2. Je reviens en modification sur la colonne et à la place du nom technique je renseigne le libellé d’affichage de la colonne

    Cette méthode évite d’avoir des noms techniques de colonnes du style : N_x00b0__x0020_cde_x0020__x0028_ 😭

    Création des types de contenus de site

    Comme pour les colonnes de site, la création des types de contenu de site est accessible à partir de la page des paramètres du site :

    • Rendez-vous sur la page Contenu du site
    • Cliquez sur Paramètres du site
    • Cliquez sur Types de contenu de site
    • Créez vos types de contenus
    • Ajoutez-y vos colonnes de site

    Création des listes

    Après avoir créé votre liste vide (toujours en 2 étapes comme pour les colonnes) :

    • Rendez-vous sur la page des paramètres de votre liste
    • Cliquez sur Paramètres avancés
    • Activez la case Oui de la question Autoriser la gestion des types de contenu ?
    • Cliquez sur le bouton OK en bas de page -> vous revenez sur la page des paramètres de la liste
    • Sous le tableau Types de contenu, cliquez sur le lien Ajouter à partir de types de contenu de site existants
    • Choisissez votre type de contenu créé précédemment dans la liste de gauche et cliquez sur Ajouter > pour le glisser dans la liste de droite puis cliquez sur le bouton OK

    A ce stade, vous remarquerez que toutes les colonnes de votre type de contenu sont rapatriées dans votre liste.

    TRES IMPORTANT >> Le type de contenu que vous voyez affiché dans le tableau Types de contenu de la page des paramètres de votre liste est une COPIE du type de contenu d’origine : celui qui se trouve dans votre liste est un type de contenu DE LISTE, celui d’origine que vous avez créé précédemment est un type de contenu DE SITE. C’est la raison pour laquelle sur le schéma précédent, le type de contenu qui se trouve dans la liste s’appelle T1′ (prime) 😉.

    Cela implique que si vous cliquez sur le type de contenu de votre liste et que vous le modifiez, vous n’impacterez que cette liste là et le type de contenu d’origine (de site) ne sera pas modifié.

    L’intérêt de cette mécanique est justement que si un type de contenu de site est utilisé dans plusieurs listes, modifier le type de contenu DE SITE impacte toutes les listes qui l’utilisent. Peut être pratique… 😉

    Nomenclature

    Avoir un nommage technique clair et cohérent dans l’ensemble de votre modèle de données dans SharePoint vous garanti une facilité d’utilisation par la suite dans vos applications.

    Chacun peut avoir sa propre nomenclature bien sûr. Je partage avec vous celle que j’utilise depuis toujours (on parle bien ici du nom TECHNIQUE des colonnes et des listes) :

    Pour ce qui est des types de contenu, ils n’ont pas de nom technique mais un identifiant alphanumérique qui est produit automatiquement par SharePoint. Lorsque vous créez un type de contenu vous pouvez donc le faire en une seule étape en saisissant directement son libellé d’affichage.

    Colonnes obligatoires

    Pour les modèles de données utilisés dans le cadre d’applications Power Apps j’ai pour habitude de ne créer aucune colonne obligatoire dans mes listes SharePoint : TOUTES les colonnes sont facultatives. Je gère le côté obligatoire des colonnes directement sur les datacards des formulaires dans les écrans Power Apps.

    AVANTAGE : si une colonne change et devient facultative ou obligatoire je n’ai besoin de modifier QUE le datacard. Si je gérais ça aussi côté SharePoint, je serais obligé de le modifier à la fois dans l’application ET dans SharePoint (car le modifier dans SharePoint seul n’impacte pas automatiquement le datacard dans l’application).

    Modèle de données

    Pour terminer, voici la manière dont je représente systématiquement mes modèles de données avant d’attaquer le développement d’une application :

    Quelques explications :

    Vous trouverez le PPT correspondant ici : https://ppfc.fr/?attachment=15266&document_type=document&download_document_file=1&document_file=2

    PostID=HCMBlpOf4M5aRFk

    Admin a répondu Il y a 4 mois, 3 semaines 3 Membres · 6 Réponses
  • 6 Réponses
  • MarKAR

    Membre
    4 octobre 2023 à 18h52

    Hello R3dKap

    Comment ferais tu si tu dois gérer des rôles utilisateurs (applicatif)

    Administrateur – Responsable – Utilisateur normal

    Où est ce que tu gère cette relation et surtout comment tu fais sachant qu’on ne peut pas faire un lookup sur un SPuser.

    Merci 😊

    CommentID=jwRqIKV5gRn0Z57, PostID=HCMBlpOf4M5aRFk

  • R3dKap

    Membre
    5 octobre 2023 à 13h04

    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

  • MarKAR

    Membre
    5 octobre 2023 à 13h59

    Oui c’est ce que j’ai fait, c’est rassurant 😄

    De plus dans mon app j’ai dû gérer des accès conditionnels à des Usines en fonction du Role utilisateur et pour cela j’ai dû réécrire les utilisateurs dans des champs multi user dans la liste des Usines

    On se retrouve donc avec une liste pour les accès des utilisateurs à l’app et une liste Usines pour les accès à l’usine avec redondance des infos de type User

    J’avais aussi essayé Dataverse mais je n’arrivais pas à filtrer les utilisateurs et ça me montrait tous les éléments de l’AD

    J’avais beaucoup réfléchi, fait et refait des modèles mais finalement j’avais réalisé comme tu as décrit 🎉

    Ça me rassure, et je te remercie énormément 😄

    CommentID=ZwkUQjH4ENHuFPn, PostID=HCMBlpOf4M5aRFk

  • Admin

    Membre
    16 octobre 2023 à 8h15

    Au lieu de gérer des champs multi-users (un peu relou à gérer) pour indiquer pour chaque usine qui y a accès, tu peux plutôt (c’est une bonne pratique dans plein d’autres cas aussi) :

    1. Créer une relation plusieurs-à-plusieurs entre ta table Usines et la table native Utilisateurs du Dataverse (en supposant que ton modèle de données soit dans Dataverse)

    2. Créer une liste dans SharePoint (ou table dans Dataverse) qui fasse le lien entre ta liste des utilisateurs de l’application et ta liste des usines : c’est une liste à 2 colonnes très simple (Utilisateur, qui est une colonne de recherche vers ta liste des utilisateurs, et Usine qui est une colonne de recherche vers ta liste des usines)

    Tiens, d’ailleurs en relisant ton post je me rends compte que tu précises que l’accès à une usine se fait par rôle. Et bien pour éviter la redondance des users, il te faut indiquer pour chaque usine non pas les utilisateurs qui y ont accès mais les rôles qui y ont accès. Essaie toujours de représenter dans ton modèle de données tout simplement la réalité… 😉

    CommentID=crpjLcQNkXm89us, PostID=HCMBlpOf4M5aRFk

Connectez-vous pour répondre.