jeudi 14 mai 2009

SharePoint Numérotation Auto Incrémenté pour vos documents

 

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

cd

Cliquez sur le bouton ajouter

cd01

Choisissez une connexion réception de données et cliquez sur suivant.

cd02

Choisissez Bibliothèque ou liste SharePoint comme la source de données.

cd03

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).

cd04 

Sélectionnez la bibliothèque Bon de Commande Interne qui devra paraitre dans votre liste

 cd05

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

cd06

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

cd07

Lorsque vous arrivez à la 3eme étape clique sur le bouton formule a coté du nom de fichier

cd08

Ensuite cliquez sur le bouton Insérer une formule

cd15-1

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

 

cd15-02

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

cd12

  • 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.

 

cd13

Ajoutez une action

cd14

  • 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.

 

cd18 

Sélectionnez “Sélectionnez un champ ou un groupe” et vous verrez apparaitre la fenêtre qui suit

cd19

    • 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.

cd20

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.

cd16

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

cd09

Choisissez la fonction max()

cd10  Allez chercher le champ ID

cd11Ajouter +1 à la fonction max(@ID)+1

cd15

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.