Partager via


Les colonnes publiées à partir de champs InfoPath sont recréées lorsque le même modèle de formulaire InfoPath est republié

Numéro de la base de connaissances d’origine : 2554288

Symptômes

Prenons l’exemple du scénario suivant :

  • Vous créez un modèle de formulaire Office InfoPath et le publiez dans une bibliothèque de documents dans SharePoint. Lors de la publication, vous sélectionnez certains champs InfoPath à publier en tant que colonnes dans la bibliothèque de documents. Après avoir publié le modèle de formulaire, vous décidez de publier le même modèle de formulaire et les mêmes champs dans une autre bibliothèque de documents sur le même site SharePoint.

  • Plus tard, vous implémentez une modification dans le modèle de formulaire InfoPath et republiez le modèle de formulaire dans les deux bibliothèques de documents dans le même ordre que lors de la première publication.

Dans ce scénario, toutes les colonnes des bibliothèques de documents publiées à partir des champs InfoPath sont recréées.

Au cours de cette procédure, le nom interne des colonnes recréées dans les bibliothèques de documents SharePoint est également mis à jour, c’est-à-dire qu’un nombre commençant par 0 est suffixe de l’ancien nom de colonne. Par exemple, une colonne appelée LastName devient LastName0.

La recréation des colonnes est un processus en deux étapes :

  1. La colonne est à nouveau ajoutée à la bibliothèque SharePoint.
  2. Les colonnes qui ne sont pas associées aux champs InfoPath sont supprimées.

Cause

InfoPath stocke la liste des champs publiés dans les bibliothèques de documents SharePoint dans un manifeste local, ainsi que les colonnes auxquelles ces champs sont associés. Pour ce faire, référençant l’ID de colonne dans SharePoint (valeur GUID unique) avec le champ InfoPath.

Lorsque vous publiez le modèle de formulaire InfoPath mis à jour dans une bibliothèque de documents SharePoint la deuxième fois, InfoPath vérifie si la colonne avec l’ID associé existe déjà. S’il ne trouve pas la colonne correspondante, une nouvelle colonne est créée dans la bibliothèque de documents. Toutes les colonnes qui ne sont associées à aucun des champs InfoPath sont supprimées de la bibliothèque de documents.

Les opérations suivantes sont effectuées en arrière-plan lorsque vous publiez le même modèle de formulaire dans plusieurs bibliothèques SharePoint :

  • Lorsque vous publiez le modèle de formulaire dans la première bibliothèque pour la première fois, chaque colonne publiée est créée et associée au champ InfoPath correspondant.

  • Lorsque vous publiez le modèle de formulaire dans la deuxième bibliothèque la première fois, InfoPath ne trouve pas les colonnes associées aux ID stockés et crée donc de nouvelles colonnes. Il associe ensuite le nouvel ID de colonne au champ InfoPath correspondant.

  • Lorsque vous publiez le modèle de formulaire dans la première bibliothèque la deuxième fois, InfoPath ne trouve pas les colonnes associées avec les ID stockés, car les GUID de la deuxième bibliothèque sont actuellement associés aux champs. InfoPath crée donc des colonnes qui, à leur tour, obtiennent de nouveaux ID et sont associées aux champs InfoPath.

  • Dans ce processus, de nombreuses colonnes créées ne sont associées à aucun des champs InfoPath et sont supprimées de la bibliothèque de documents.

  • Ce comportement se répète lorsque vous publiez le modèle de formulaire dans la deuxième bibliothèque.

Remarque

Ce problème ne se produit pas si le modèle de formulaire InfoPath est publié en tant que type de contenu de site ou si les champs InfoPath sont publiés en tant que colonnes de site dans SharePoint.

Résolution

Il existe deux méthodes pour éviter que cela ne se produise :

  • Créez une colonne de site pour chaque champ InfoPath à publier sur le site SharePoint et sélectionnez les colonnes de site créées au préalable lors de la publication du modèle de formulaire InfoPath dans les deux bibliothèques.

    Comme l’ID des colonnes de site ne change pas, InfoPath n’a pas besoin de recréer les colonnes existantes.

  • Créez une copie distincte du modèle de formulaire InfoPath, une pour chacune des bibliothèques de documents SharePoint. Cela permet de s’assurer qu’InfoPath ne recrée pas les colonnes existantes, car les ID de colonne ne changeront pas.

    L’inconvénient de cette approche est que vous devez implémenter toutes les modifications dans toutes les copies de modèle de formulaire en cours d’utilisation.

Remarque

En général, au lieu de publier deux fois le modèle de formulaire InfoPath, l’approche recommandée consiste à publier le modèle de formulaire en tant que type de contenu de site et à associer le type de contenu de site aux deux bibliothèques de documents SharePoint.

Informations supplémentaires

Pour plus d’informations, voir Ajouter, supprimer ou modifier des colonnes de bibliothèque SharePoint ou des colonnes de site.