[SP2010] InfoPath – Demande de congé

Introduction

Généralement, la première requête demandée par le service RH d’une société est de pouvoir informatiser et automatiser certaines tâches comme celle des demandes de congé.
Ici je vais vous présenter un simple formulaire qui fait son petit effet auprès des utilisateurs finaux.

Formulaire de demande de congé

Le but de cet article est de vous montrer un bref aperçu des possibilités de InfoPath 2010 avec SharePoint 2010.

Création du formulaire

Pour ce faire, il nous faut Ouvrir M$ InfoPath Designer 2010 et Sélectionner « Nouveau » puis « Bibliothèque de formulaires SharePoint« .

Infopath Créer nouveau formulaire sharepointEnsuite reproduire le formulaire de la manière suivante :

Infopath détails du formulaire de demande de congé

Configuration du tableau extensible (Détails du congé)

Je préfère commencer par le plus simple, ce tableau extensible servira à ajouter des périodes de congé de manière dynamique et facile à mettre en oeuvre.

Le champ Type

Ce champ est directement lié à une liste SharePoint contenant tous les types de congés.
Voici la procédure:

  • Ouvrir les Propriétés de la Zone de liste déroulante

  • Sélectionner « Rechercher des choix dans une source de données externe » dans la section « Choix de la zone de liste« 
  • Cliquer sur « Ajouter … » en face de « Source de données :« 
  • Dans l’assistant, Sélectionner « Créer une connexion pour : Réception de données« 

  • Dans la TextBox, entrer l’url de votre site SharePoint où se situe votre liste de types de congés

  • Sélectionner votre liste de types de congés

  • Cocher le champ Titre (Title) et trier par ID ou Titre (Title)

  • Je vous recommande pour ce genre d’informations qui ne changent pas tous les jours de cocher la case « Enregistrer une copie des données dans le modèle de formulaire« 

  • Entrer le nom de votre connexion de données (pour moi TypeConge)

  • Terminer
  • Selectionner la Source de données juste créée puis choisir le champ à afficher dans la liste déroulante.

  • OK

Le Champ du Total des heures demandées

Dans un premier temps,  il faut créer un nouveau champ, que je vais nommer « TotalHeures », de type double, qu’il faudra placer dans la racine du groupe du tableau extensible.

Traduction, quelques images parlent bien mieux qu’un long discours:

InfoPath Nouveau Champ

Préchargement des informations personnelles

Lorsque l’utilisateur final cliquera sur l’icône à coté des champs TextBox de la colonne « Employé », cette action aura pour mission d’insérer automatiquement les données personnelles de l’utilisateur (à savoir, pour cet exemple, ses Nom et Prénom, son Titre, son Numéro de téléphone et son Email) ainsi que celles de son manager.

Voici les procédures:

Etape 1 : Créer la connexion de données aux informations utilisateurs

  • Ajouter une nouvelle connexion de données dans « Connexion de données » se situant dans l’onglet « Données » du ruban
  • Dans l’assistant, Sélectionner « Créer une connexion pour : Réception de données« 
  • Sélectionner « Service Web SOAP« 
  • L’URL du service web à utiliser est la suivante :
    « http://url_racine_du_sharepoint/_vti_bin/UserProfileService.asmx?WSDL« 
  • Séléctionner l’opération : « GetUserProfileByName« 
  • Suivant > Suivant > Suivant > Terminer

Etape 2 : Créer la règle d’insertion des données personnelles

  • Sélectionner le Bouton Image
  • Cliquer sur « Gérer les règles » dans l’onglet « Acceuil » du ruban (tout en laissant sélectionné le bouton image)
  • Cliquer sur « Nouveau > Action » dans le panneau des règles
  • Donner un nom à la règle (ex: SetUserInfos) dans le champ « Détails de : »
  • Ajouter la condition : Le nom de l’employé est vide (pour mon formulaire le champ est « NomEmp »)
  • Ajouter les actions suivantes :
  1. « Requête de données »
    – Sélectionner la connexion de données précédement créée (GetUserProfilByName)
  2. « Définir la valeur d’un champ »
    – Sélectionner un champ à remplir (ex: NomEmp) en cliquant sur le bouton correspondant
    – Pour la valeur, cliquer sur le bouton FX (la formule ressemblera à ceci : « concat(Value[Name = « LastName »];  » « ; Value[Name = « FirstName »]) »)
    Pour ce faire, utiliser la fonction « concat » puis double-cliquer pour insérer un champ.

    Pour l’étape 6, la valeur du filtre est LastName (pour cet exemple), et voici la liste des filtres disponibles:
    UserProfile_GUID
    AccountName
    FirstName
    LastName
    PreferredName
    WorkPhone
    Office
    Department
    Title
    Manager
    AboutMe
    PersonalSpace
    PictureURL
    UserName
    QuickLinks
    WebSite
    PublicSiteRedirect
    SPS-Dotted-line
    SPS-Peers
    SPS-Responsibility
    SPS-Skills
    SPS-PastProjects
    SPS-Interests
    SPS-School
    SPS-SipAddress
    SPS-Birthday
    SPS-MySiteUpgrade
    SPS-DontSuggestList
    SPS-ProxyAddresses
    SPS-HireDate
    SPS-LastColleagueAdded
    SPS-OWAUrl
    SPS-ResourceAccountName
    SPS-MasterAccountName
    Assistant
    WorkEmail
    CellPhone
    Fax
    HomePhone
    (Attention à ne pas avoir 2 fois les double quotes)
  3. Répéter l’étape précédente (2.) jusqu’à remplir tous les champs souhaités.

Cela devrait ressembler à :

Etape 3: Créer la règle d’insertion des données du manager

Cette règle peut s’apparenter à la celle des données personnelles si ce n’est que pour les conditions nous avons seulement :

  • La vérification si le champ du nom du responsable est vide
  • La vérification que le Mail de l’employé n’est pas vide

Quant aux actions, on ajoute avant l’action d’éxecuter une requête:

  • « Définir la valeur d’un champs« 
  • Ce champs fait partie de la connexion de donnée « GetUserProfileByName » le nom de ce champs est : « AccountName« 
  • sa valeur est « Value[Name = « Manager »] »
  • Pour l’étape 6 Mettre « Manager« 

Cela devrait ressembler à :

Conclusion

Ce genre de formulaire peut plaire à beaucoup donc n’hésitez pas à en créer, surtout lorsque cela ne prend pas énormément de temps.

On pourrait éventuellement ajouter d’autres fonctionnalités comme les Options d’envoi dans une bibliothèque de formulaire spécifique avec un format d’enregistrement déterminé ou encore mettre des règles de vérifications au niveau des dates (ex: date de début n’est pas supérieur à date de fin), des heures entrés (ex: en fonction du type de congé).

Bref nous pourrions imaginer des sénarii encore plus poussés que celui que je vous ai présenté aujourd’hui, mais cela n’était pas mon objectif premier.

Je vous laisse le fichier InfoPath quelque peut amélioré :

Ouvrir Demande de congé.xsn
Demande de congé.xsn

Tagged with:
Publié dans InfoPath, SharePoint 2010
5 comments on “[SP2010] InfoPath – Demande de congé
  1. Bonjour,
    Bravo pour ce tutorial qui explique de façon clair le fonctionnement de la récupération des infos de l’utilisateur et du manager.
    Si on publie ce formulaire sur Sharepoint online, cela fonctionne correctement si l’utilisateur final a Infopath sur son poste. Mais si on choisit de d’ouvrir le formulaire avec le navigateur, on obtient un message d’erreur qui empêche de récupérer les infos.
    « Une erreur s’est produite pendant l’interrogation d’une source de données »
    Y a t-il une solution pour récupérer les infos de l’utilisateur et du manager lorsque c’est le navigateur qui affiche le formulaire infopath
    Cordialement

  2. […] Tout ce qu’il faut savoir sur les solutions “SandBoxed” de SharePoint 2010 [SP2010] InfoPath – Demande de congé Installation du iFilter PDF SharePoint Server 2010 : Indexer les documents PDF via le ifilter […]

  3. utopik dit :

    Très intéressant, mais a priori, il manque un fichier vb.

    J’ia le message suivant quand j’essaie d’ouvrir le projet infopath

    Le projet VB est introuvable : demande de congé.vbproj

    • Bonjour,
      En fait il n’y a pas de projet VB. Il se peut qu’il y est encore sa référence.
      Pour résoudre ce problème il suffit de :

      1. Activer la Tab « Développeur »
        • Fichier > Options
        • Dans « Personnaliser le Ruban » sous la liste « Onglets principaux », cocher la checkbox correspondant à « Développeur
        • OK
      2. Supprimer la référence du projet VB
        • Ouvrir la tab « Développeur »
        • Cliquer sur le bouton « Langue »
        • Dans la fenêtre « Options de formulaire », cliquer sur le bouton « Supprimer le code »
        • OK

      Cordialement,

Laisser un commentaire