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.
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« .
Ensuite reproduire le formulaire de la manière suivante :
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:
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 :
- « Requête de données »
– Sélectionner la connexion de données précédement créée (GetUserProfilByName) - « 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) - 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é :
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
Bonjour,
N’ayant pas de compte Office 365, je ne peux que supposer certaine possibilité:
– Vous n’avez pas de licence Entreprise
– Le formulaire n’est pas initialement prévu pour de l’authentification du type Form (cf: pour modifier cela http://support.microsoft.com/kb/2619846)
– Ce problème est peut être dû aussi à une limitation de Office Web Apps pour Office 365 (Cf:http://community.office365.com/en-us/forums/153/p/60953/227078.aspx#227078)
Si toutefois vous avez trouvé la solution, n’hésitez pas à la publier, je serais curieux d’en connaitre la réponse.
Cordialement,
[…] 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 […]
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 :
Cordialement,