Corriger les formulaires InfoPath dans les solutions bac à sable (sandbox)
Lorsque vous utilisez des formulaires InfoPath avec code-behind, les formulaires dépendent de solutions bac à sable basées sur du code pour exécuter le code-behind. Cet article vous aide à corriger ou transformer vos formulaires InfoPath afin qu’ils ne dépendent plus des solutions bac à sable.
Notes
L’utilisation des solutions bac à sable basées sur un code est déconseillée depuis 2014 et, dans SharePoint Online, cette fonctionnalité est sur le point d’être totalement supprimée. Les solutions bac à sable basées sur un code sont également déconseillées dans SharePoint 2013 et SharePoint 2016.
Analyser vos formulaires InfoPath
Dans cette section, nous décrivons un modèle que vous pouvez utiliser pour analyser et corriger vos formulaires InfoPath. Selon le formulaire, vous pouvez corriger le formulaire et le redéployer, ou vous devrez peut-être vous éloigner d’InfoPath et utiliser une autre approche pour obtenir les fonctionnalités dont vous avez besoin.
Avant d’agir, il est important d’évaluer les besoins métier de votre formulaire. Nous voyons souvent de nombreux formulaires qui ne sont plus pertinents pour l’entreprise, et dans ce cas, il est plus facile de simplement déposer le formulaire.
Déterminer si vos formulaires InfoPath utilisent du code-behind
Pour le déterminer, nous vous recommandons d’utiliser l’outil SharePoint scanneur solution bacà sable .. Le rapport de cet outil indique si la solution en bac à sable provient d’un fichier InfoPath. L’outil vous indique également si l’assembly utilisé dans la solution est inutile, comme décrit plus loin dans cet article.
Déterminer si vos formulaires sont toujours pertinents
Avant de vous plonger dans le travail de correction/transformation, il est important de déterminer si le formulaire est toujours essentiel pour votre entreprise. Si c’est le cas, continuez jusqu’à la section suivante . si ce n’est pas le cas, vous devez réfléchir aux données créées à l’aide de ce formulaire.
En règle générale, les données ont été créées en tant que fichiers XML InfoPath qui se SharePoint liste. Si vous supprimez le formulaire, vous ne pourrez plus visualiser les données. Parfois, cela est normal, car le formulaire et les données ne sont plus pertinents. Toutefois, si vous souhaitez pouvoir accéder aux données, vous pouvez convertir les données provenant des fichiers XML InfoPath en données SharePoint d’éléments de liste. Pour ce faire, voir l’application console EmpRegConsole PnP-Transformation.
Télécharger les formulaires InfoPath (fichier XSN) pour l’inspection
Si vous avez confirmé que vous avez des formulaires InfoPath nécessitant un travail, vous devez télécharger ces formulaires. Les formulaires InfoPath avec code-behind sont déployés en tant que bibliothèque de formulaires ou type de contenu de site.
Bibliothèque de formulaires
Dans ce cas, le fichier XSN se trouve dans le dossier Forms de la bibliothèque de formulaires dans laquelle le formulaire InfoPath a été déployé. Pour trouver la bibliothèque de formulaires, regardez le nom du package WSP qui suit cette convention InfoPath Form_LibName_id :
Une fois que vous connaissez la bibliothèque de formulaires, vous devez télécharger le fichier template.xsn à partir du dossier Forms de la bibliothèque. Vous pouvez le faire en construisant une URL comme celle-ci, l’URL de la bibliothèque + /Forms/template.xsn (par exemple : ), et en utilisant le navigateur pour télécharger https://contoso.sharepoint.com/sites/infopath1/IHaveCodeBehind/Forms/template.xsn le fichier.
Type de contenu de site
Les formulaires InfoPath déployés en tant que type de contenu de site ont leur fichier XSN stocké dans une bibliothèque de formulaires connectée au type de contenu au moment du déploiement du formulaire. Comme dans la section précédente, vous pouvez obtenir le nom de la bibliothèque à partir du nom du package WSP. Cette fois, le formulaire est effectivement stocké en tant que fichier dans la bibliothèque. Vous pouvez donc simplement le télécharger à partir de la bibliothèque de formulaires.
Corriger vos formulaires InfoPath
Les sections précédentes vous ont montré les formulaires InfoPath avec code-behind, mais ces formulaires contiennent-ils réellement du code-behind utile ? Il existe de nombreux formulaires pour lesquels l’auteur du formulaire a accidentellement choisi le bouton Éditeur de code dans le ruban Développeur InfoPath.

Si vous avez effectué cette procédure, vous pouvez avoir du code-behind qui n’a rien à faire. En le supprimant, vous pouvez convertir votre formulaire InfoPath avec code-behind en formulaire InfoPath sans code-behind et sans dépendance vis-à-vis des solutions bac à sable.
Déterminer si le code-behind de vos formulaires est inutile
Le scanneur SharePoint solution bac à sable (sandbox) vous indique si votre formulaire InfoPath possède du code inutile. Toutefois, vous vous demandez peut-être comment faire la distinction entre le code-behind inutile et nécessaire, car vous ne pouvez corriger que du code inutile. Si vous avez toujours le formulaire d’origine (et non celui que vous avez téléchargé dans les étapes précédentes), vous pouvez simplement examiner le code.
Voici le code vide par défaut, et si votre code est similaire, le formulaire peut être résolu en laissant le code.
using Microsoft.Office.InfoPath;
using System;
using System.Xml;
using System.Xml.XPath;
namespace Form1
{
public partial class FormCode
{
// Member variables are not supported in browser-enabled forms.
// Instead, write and read these values from the FormState
// dictionary using code such as the following:
//
// private object _memberVariable
// {
// get
// {
// return FormState["_memberVariable"];
// }
// set
// {
// FormState["_memberVariable"] = value;
// }
// }
// NOTE: The following procedure is required by Microsoft InfoPath.
// It can be modified using Microsoft InfoPath.
public void InternalStartup()
{
}
}
}
Si vous avez uniquement le fichier XSN que vous avez téléchargé à l’étape précédente, vous pouvez renommer votre fichier XSN en tant que fichier cab (par exemple, template.cab), extraire l’assembly et utiliser des outils de réflexion .NET (tels que le navigateur d’assembly .NET open source ILSpy et le decompiler)pour inspecter le code.
Une vue classique du code-behind inutile ressemble à la figure suivante dans ILSpy.

Drop code-behind from InfoPath forms to fix them
Si vous avez confirmé que votre code-behind est inutile, vous pouvez le déposer en suivant les procédures ci-après :
Ouvrez le formulaire dans InfoPath Designer (cliquez avec le bouton droit sur Création).
Go to File > Info > Form Options.
Choisissez la catégorie Programmation, puis sélectionnez Supprimer le code.
Publiez à nouveau le formulaire dans la publication rapide des > informations sur les > fichiers.
Désactivez la solution de bac à sable liée sur Site Paramètres > Solutions.
Confirmez que le formulaire fonctionne comme prévu.
Supprimez la solution en bac à sable( sandbox).
Notes
Si vous n’avez plus accès au fichier XSN InfoPath et au code source, vous pouvez toujours corriger ces formulaires en désactivant les solutions bac à sable qui ont du code inutile. Ne le faites que pour ceux mentionnés dans le rapport de solution bac à sable avec IsEmptyInfoPathAssembly = true.
Migrer vos formulaires InfoPath
Si les instructions des sections précédentes ne s’appliquent pas à vos formulaires InfoPath, cela signifie que vos formulaires sont toujours pertinents pour l’entreprise et contiennent du code-behind que vous ne pouvez pas déposer. Si c’est le cas, la solution classique consiste à s’éloigner d’InfoPath, ce qui peut être effectué de l’une des manières suivantes :
Créez un SharePoint qui exploite les API distantes pour lire/écrire SharePoint données.
Créez une application à l’aide d’Azure PowerApps ou Microsoft Flow.

Créer SharePoint Add-Ins pour remplacer vos formulaires InfoPath
Lorsque vous choisissez d’utiliser SharePoint Add-Ins pour remplacer vos formulaires InfoPath, plusieurs options s’offrent à vous. Trois options s’offrent à vous : toutefois, vous pouvez utiliser des variantes de ces éléments.
Modèles de codage InfoPath courants
Pour vous aider à convertir votre formulaire InfoPath, voici une liste de 11 modèles de codage InfoPath courants et la façon dont vous pouvez implémenter ces modèles à l’aide des trois options de SharePoint.
Pour ce faire, nous avons d’abord développé un formulaire InfoPath de référence qui utilise les modèles de codage InfoPath les plus courants, puis nous avons migré ce formulaire vers trois modèles de SharePoint.
Les liens suivants montrent ces modèles courants :
- Remplir les champs lors du chargement du formulaire : définir les informations utilisateur
- Remplir les champs lors du chargement du formulaire - Lire les informations de liste
- Remplir les champs lors du chargement du formulaire - lire les données de liste
- Envoyer le formulaire par code
- Changer d’affichage après l’envoi du formulaire
- Récupérer des données utilisateur
- Lire la collecte de données et définir plusieurs contrôles
- Charge de données en cascade
- Télécharger ou supprimer des pièces jointes
- Ajouter ou supprimer des utilisateurs de groupes de sites
- Charger l’élément existant dans le formulaire
Migrer vos données InfoPath
Après avoir migré vos formulaires InfoPath vers une nouvelle solution, vous pouvez également migrer vos données d’InfoPath XML vers des données de liste SharePoint normales ou vers la couche de données de votre choix. Étant donné que les fichiers InfoPath sont des fichiers XML, il est assez facile de les lire et de les transformer.
Pour ce faire, utilisez l’application console EmpRegConsole PnP-Transformation.
Ouvrir des formulaires existants
Dès que les opérations basées sur le code sont désactivées, le code ne peut plus s’exécuter dans le bac à sable. Par conséquent, si vous avez des formulaires qui exécutent du code, l’ouverture des formulaires existants ne fonctionne plus.
Les étapes suivantes peuvent vous aider à gérer cette situation :
Si vous avez migré votre formulaire InfoPath vers une nouvelle solution, vous avez probablement déjà converti vos données et si c’est le cas, vous êtes satisfait.
Si vous avez choisi de conserver le formulaire tel quel (par exemple, parce qu’il n’est plus pertinent pour l’entreprise), mais que vous souhaitez toujours ouvrir les formulaires existants, vous pouvez :
Supprimez le code-behind de votre formulaire et repupuyez-le (consultez la section Supprimer le code-behind des formulaires InfoPath pour les corriger).
Utilisez le client InfoPath pour ouvrir les formulaires.
Migrez les données de formulaire vers des SharePoint de liste de données simples (voir la section Migrer vos données InfoPath).
