Il est parfois nécessaire d’attribuer un numéro automatique (AutoInc) pour vos formulaires InfoPath enregistrer sur un serveur SharePoint, nous allons vous montrer dans ce tutoriel comment y arriver sans aucune ligne de code, nous allons prendre un cas pratique qui est celui d’un bon de commande interne.
I-Pré-requis
Avant de commencé des connaissances sur la conception des formulaires InfoPath et sites SharePoint (des bibliothèques de documents en particulier) sont nécessaire 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 du 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 devrais disposer de SharePoint Services et d’InfoPath 2007.
Afin d’arriver a notre but l’astuce consiste à récupérer, incrémenté ID le plus grand de notre Librairie et de l’attribuer a notre formulaire au moment de l’envoie de celui-ci au serveur donc l’utilisateur ne verra le numéro qu’une fois le formulaire est été envoyé, c’est un peut contraignant mais c’est inévitable pour ne pas avoir des doublons dans le cas d’une utilisation simultané
III-Mise en œuvre
Nous supposons que vous avez déjà créé votre formulaire et une bibliothèque de formulaire InfoPath nommé pour Bon de Commande Interne.
Dans votre formulaire InfoPath ajouter un champ Texte pour le numéro si ce n’est pas encore fait que nous allons nommer ici NumBC.
Pour récupérer 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-1 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 DocLib comme indiqué que l’image (vous pouvez faire un copiez collez dans barre d’adresse de votre navigateur quand vous est sur votre librairie).
Sélectionnez la bibliothèque Bon de Commande Interne qui devra paraitre dans votre liste
Décochez tous les autres champs a l’exception de la colonne ID et veillez a ce que la case Inclure les données pour le formulaire actif soit décoché cliquez sur suivant et ne faite rien dans la 6eme étape
Nommez la connexion GetIDs et veillez aussi à décocher la case Extraire automatiquement les données a l’ouverture du formulaire et cliquez sur Terminer
De la même manière nous allons créer une autres connexion mais cette fois ci d’envoi des données toujours vers une librairie ou liste SharePoint
Lorsque vous arrivez à la 3eme étape clique sur le bouton formule a coté du nom de fichier
Ensuite cliquez sur le bouton Insérer une formule
Allez chercher la fonction concat() 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 a la place du premier paramètre un nom pour votre bon de commande exemple “BCI N°” pour le second paramètre allez cherchez le Champs NumBC
En résultat vous aurez une fonction qui ressemble a ceci concat(“BC N°”;NumBC).
Vous pouvez cliquez sur vérifier formule pour vous assurer qu’il n’y pas d’erreurs, cliquez sur OK et nommer votre connexion Envoi.
Nous pouvons maintenant fermer notre fenêtre Connexions de données.
III-2 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 Avancer et choisissez fermer le formulaire dans la liste de choix Après l’envoi
- cliquez ensuite sur le bouton Règles
Suite a une contrainte de la fonction max() qui renvoi une valeur NaN lorsque la bibliothèque est vide nous somme obliger de gérer a part le cas de la création du premier formulaire, pour ce faite nous allons créer trois règles conditionnelle au lieu d’une.
III-2.1 Récupérer ID courant
Nous allons tous d'abord créer une règle avec une seul action et sans condition pour récupérer la liste des IDs de notre bibliothèque grâce à la connexion GetIDs que nous avant définit 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-2.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.
Aouter une règles 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 cherchez 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 tous simplement 1.
Pour la deuxième action sélectionnez Envoyer via une connexion de données avec la connexion Envoi que nous avons créé en second lieu.
Nous avons terminé avec notre deuxième règle nommez la “envoi 1er formulaire” ou bon il vous semble.
III-2.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 fais 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’avion fais 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 fais avec la deuxième règle.
Nommez votre règle “envoi formulaire” et fermer toute vos fenêtres
IV- Publication du formulaire
Et voila c’est fini vous pouvez dès à présent publier et testé votre formulaire
Remarque qu’après l’insertion du premier formulaire sur votre serveur, la deuxième règle et les conditions que nous avons définis ne servent plus a rien et engendre des traitements inutiles, il est préférable de les supprimer et ne gardé que la première et troisième règle en ôtant la condition.