I. Pré-requis▲
Avant de commencer, des connaissances sur la conception des formulaires InfoPath et sites SharePoint (des bibliothèques de documents en particulier) sont nécessaires afin de mieux comprendre ce qui va suivre.
II. Introduction▲
Dans ce tutoriel nous n'allons pas nous focaliser sur la création d'un formulaire InfoPath ou sur la
création de site SharePoint, nous allons juste voir comment attribuer un numéro automatique aux formulaires
enregistrés dans notre bibliothèque.
Pour réaliser ce tutoriel vous devez disposer de SharePoint Services et d'InfoPath 2007.
Afin d'arriver a notre but, l'astuce consiste à récupérer et incrémenter l'ID le plus grand de notre
Librairie. Attribuer cet ID a notre formulaire au moment de son envoi au serveur, donc l'utilisateur
ne verra le numéro qu'une fois que le formulaire a été envoyé. C'est un peu contraignant mais c'est
inévitable pour ne pas avoir des doublons dans le cas d'une utilisation simultanée
III. Mise en œuvre▲
Nous supposons que vous avez déjà créé votre formulaire et une bibliothèque de formulaire InfoPath nommé
Bon de Commande Interne.
Si ce n'est pas encore fait, ajoutez dans votre formulaire InfoPath, un champ Texte pour le numéro,
que nous allons nommer ici NumBC.
Pour récupérer l'ID de notre DocLib nous aurons besoin de créer une connexion de données qui va aller
chercher le numéro le plus grand sur notre serveur.
III-A. Définition des connexions de données.▲
Dans InfoPath allez dans le menu outils-> Connexions de données, vous verrez la fenêtre suivante.
Cliquez sur le bouton ajouter
Choisissez une connexion réception de données et cliquez sur suivant.
Choisissez Bibliothèque ou liste SharePoint comme la source de données.
Ensuite saisissez l'URL complète vers votre bibliothèque de documents comme indiqué sur la capture d'écran (vous pouvez faire un copier/coller dans la barre d'adresse de votre navigateur quand vous êtes sur votre librairie).
Sélectionnez la librairie Bon de Commande Interne qui devrait apparaître dans votre liste.
Décochez tous les autres champs à l'exception de la colonne ID et veillez a ce que la case Inclure
les données pour le formulaire actif soit décochée
Cliquez sur suivant et ne faites rien dans la 6eme étape
Nommez la connexion GetIDs et veillez aussi à décocher la case Extraire automatiquement les données
à l'ouverture du formulaire.Cliquez sur Terminer
De la même manière, nous allons créer une autre connexion, mais cette fois ci d'envoi des données
toujours vers une librairie ou liste SharePoint.
Lorsque vous arrivez à la 3eme étape cliquez sur le bouton formule à côté du nom de fichier
Ensuite cliquez sur le bouton Insérer une formule
Allez chercher la fonction concat() et cliquez sur Ok. Ensuite vous aurez une fonction du
genre concat(double-cliquer pour insérer un champ; double-cliquer pour insérer un champ; double-cliquer
pour insérer un champ) , Insérer à la place du premier paramètre un nom pour votre bon de commande
exemple "BCI N°". Pour le second paramètre cliquez sur le bouton "Inserer un champ ou un groupe"
pour récupérer le Champ NumBC
En résultat vous aurez une fonction qui ressemble a ceci concat("BC N°";NumBC). Vous pouvez
cliquer sur vérifier la formule pour vous assurer qu'il n'y pas d'erreurs, cliquez sur OK
et nommez votre connexion Envoi.
Nous pouvons maintenant fermer notre fenêtre Connexions de données.
III-B. Définition des paramètres d'envoi▲
Allez dans le menu Outils -> Options d'envoi
- cochez la case Autoriser les utilisateurs à envoyer ce formulaire
- choisissiez l'option Effectuer une action personnalisée à l'aide des règles
- cliquez sur le bouton Avancées et choisissez fermer le formulaire dans la liste de choix après l'envoi
- cliquez ensuite sur le bouton Règles
Suite à une contrainte de la fonction max() qui renvoie une valeur NaN lorsque la bibliothèque est vide nous somme obligé de gérer à part le cas de la création du premier formulaire, pour ce faire nous allons créer trois règles conditionnelles au lieu d'une.
III-B-1. Récupérer ID courant▲
Nous allons tout d'abord créer une règle avec une seule action et sans condition pour récupérer la liste
des IDs de notre bibliothèque grâce à la connexion GetIDs que nous avons définie précédemment.
Ajoutez une action
- choisissez dans l'action Exécuter une requête via une connexion de données
- choisissez la connexion GetIDs, Nommez la règle Récupération des IDs
III-B-2. Cas d'une bibliothèque vide▲
Quand le cas d'une bibliothèque vide est vérifié nous savons d'ores et déjà que le numéro à attribuer
est 1.
Ajoutez une règle, cliquez sur le bouton définir une condition.
Sélectionnez Sélectionnez un champ ou un groupe et vous verrez apparaitre la fenêtre qui
suit
- Sélectionnez la source de données GetIDs
- Allez chercher le champ ID
- Sélectionnez Nombre d'occurrences de ID
- Ok
Sélectionnez est égal à comme opérateur et Zéro pour la valeur.
Nous allons maintenant ajouter deux actions à notre règle.
La première : Sélectionnez une action de type Définir la valeur d'un champ, pour le champ choisissez
NumBC et pour la valeur tapez tout simplement 1.
Pour la deuxième action : Sélectionnez Envoyer via une connexion de données avec la connexion
Envoi que nous avons créée en second lieu.
Nous avons terminé avec notre deuxième règle, nommez la envoi 1er formulaire ou comme bon vous semble.
III-B-3. Cas d'une bibliothèque non vide▲
Nous allons maintenant créer notre troisième et dernière règle.
Définissez une condition comme nous l'avons fait avec la deuxième règle mais cette fois avec l'opérateur
est supérieur à zéro
Ajouter une action de type Définir la valeur d'un champ comme nous l'avions fait avec la
deuxième action mais pour la valeur de champs insérer une formule et cliquez sur ajouter
Insérer une fonction.
Choisissez la fonction max()
Allez chercher le champ ID
Ajouter +1 à la fonction : max(@ID)+1
En final vous aurez une action qui ressemble à ceci.
Nous allons maintenant ajouter une deuxième action de type Envoyer via une connexion de données
comme nous l'avions fait avec la deuxième règle.
Nommez votre règle envoi formulaire et fermez toutes vos fenêtres
IV. Publication du formulaire▲
Et voila c'est fini vous pouvez dès à présent publier et tester votre formulaire
Remarquez qu'après l'insertion du premier formulaire sur votre serveur, la deuxième règle et les
conditions que nous avons définies ne servent plus à rien et engendrent des traitements inutiles,
il est préférable de les supprimer et de ne garder que la première et troisième règle en ôtant la
condition.
V. Remerciements▲
Je tiens à remercier infiniment Ludovic LEFORT pour son aide précieuse lors de l'écriture de ce premier tutoriel, ainsi que Thomas LEVESQUE pour sa relecture.