Corriger les formulaires InfoPath dans les solutions de bac à sable

Lorsque vous utilisez des formulaires InfoPath avec code-behind, les formulaires dépendent de solutions de bac à sable basées sur du code pour l’exécution du code-behind. Cet article vous aide à corriger ou à transformer vos formulaires InfoPath afin qu’ils ne dépendent plus des solutions de bac à sable.

Remarque

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 de prendre des mesures, 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 ces cas il est plus facile de simplement supprimer le formulaire.

Déterminer si vos formulaires InfoPath utilisent du code-behind

Pour le déterminer, nous vous recommandons d’utiliser l’outil d’analyse de solution SandBox SharePoint. Le rapport de cet outil indique si la solution de 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, passez à 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 trouvent dans une liste SharePoint. Si vous supprimez le formulaire, vous ne pourrez plus visualiser les données. Parfois, ce n’est pas grave, 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 d’éléments de liste SharePoint. Pour ce faire, consultez l’application console PnP-Transformation EmpRegConsole.

Télécharger les formulaires InfoPath (fichier XSN) à des fins d’inspection

Si vous avez confirmé que vous avez des formulaires InfoPath qui nécessitent du 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 rechercher la bibliothèque de formulaires, examinez 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 : https://contoso.sharepoint.com/sites/infopath1/IHaveCodeBehind/Forms/template.xsn), et en utilisant le navigateur pour télécharger 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 qui était 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- ci, la différence est que le formulaire est stocké sous forme de 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 InfoPath Développeur .

InfoPath code-behind

Si vous l’avez fait, vous avez peut-être un code-behind qui ne fait rien. 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 de bac à sable.

Déterminer si le code-behind de vos formulaires est inutile

Le scanneur de solution de bac à sable SharePoint vous indique si votre formulaire InfoPath contient du code inutile. Toutefois, vous pouvez vous demander comment faire la distinction entre le code-behind inutile et le code-behind nécessaire, car vous pouvez uniquement corriger du code inutile. Si vous avez toujours le formulaire d’origine (pas celui que vous avez téléchargé dans les étapes précédentes), vous pouvez simplement consulter le code.

Voici le code vide par défaut, et si votre code est similaire, le formulaire peut être résolu en supprimant 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 fichier cab (par exemple, template.cab), extraire l’assembly et utiliser les outils de réflexion .NET (tels que le décompileur et le navigateur d’assembly .NET open source ILSpy) pour inspecter le code.

Une vue typique du code-behind inutile ressemble à la figure suivante dans ILSpy.

Code inutile comme vu dans ILSpy

Supprimer le code-behind des formulaires InfoPath pour les corriger

Si vous avez confirmé que votre code-behind est inutile, vous pouvez le supprimer en procédant comme suit :

  1. Ouvrez le formulaire dans InfoPath Designer (cliquez avec le bouton droit sur Création).

  2. Accédez àOptions de formulaire d’informations> sur le fichier>.

  3. Choisissez la catégorie Programmation , puis Supprimer le code.

  4. Publiez à nouveau le formulaire dansPublication rapidedes informations> sur le fichier>.

  5. Désactivez la solution de bac à sable liée dansParamètres>du siteSolutions.

  6. Vérifiez que le formulaire fonctionne comme prévu.

  7. Supprimez la solution de bac à sable.

Remarque

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 de bac à sable qui ont du code inutile. Effectuez cette opération uniquement pour celles mentionnées dans la sortie du rapport de solution de bac à sable avec IsEmptyInfoPathAssembly = true.

Migrer vos formulaires InfoPath

Si les instructions des sections précédentes ne s’appliquaient 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 supprimer. Si tel est le cas, la solution classique consiste à s’éloigner d’InfoPath, ce qui peut être effectué de la manière suivante :

  • Créez un complément SharePoint qui tire parti des API distantes pour lire/écrire des données SharePoint.

  • Créez une application à l’aide d’Azure PowerApps ou de Microsoft Flow.

    Azure PowerApps et Microsoft Flow

Créer des Add-Ins SharePoint pour remplacer vos formulaires InfoPath

Lorsque vous choisissez d’utiliser SharePoint Add-Ins pour remplacer vos formulaires InfoPath, vous avez plusieurs options. Voici trois options : Toutefois, vous pouvez utiliser des variantes de ceux-ci.

Modèles de codage InfoPath courants

Pour mieux vous aider à convertir votre formulaire InfoPath, vous trouverez ci-dessous 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 complément 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 versions de complément SharePoint.

Les liens suivants présentent ces modèles courants :

Migrer vos données InfoPath

Après avoir déplacé vos formulaires InfoPath vers une nouvelle solution, vous pouvez également migrer vos données d’InfoPath XML vers des données de liste SharePoint standard 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 PnP-Transformation EmpRegConsole.

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 ce problème :

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

  • 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 effectuer l’une des opérations suivantes :

Voir aussi