Corrección de formularios de InfoPath en soluciones de espacio aislado
Cuando se usan formularios de InfoPath con código subyacente, los formularios dependen de soluciones de espacio aislado basadas en código para ejecutar el código subyacente. Este artículo le ayuda a corregir o transformar los formularios de InfoPath para que ya no dependan de las soluciones de espacio aislado.
Nota:
Las soluciones de espacio aislado basadas en código han quedado en desuso en 2014 y SharePoint online ha iniciado el proceso para quitar esta funcionalidad por completo. Las soluciones de espacio aislado basadas en código también han quedado en desuso en SharePoint 2013 y SharePoint 2016.
Análisis de formularios de InfoPath
En esta sección, se describe un modelo que puede usar para analizar y corregir los formularios de InfoPath. Dependiendo del formulario, puede corregir el formulario y volver a implementarlo, o puede que tenga que alejarse de InfoPath y usar un enfoque alternativo para obtener la funcionalidad que necesita.
Antes de realizar cualquier acción, es importante que evalúe la necesidad empresarial de su formulario. A menudo vemos muchos formularios que ya no son relevantes para la empresa y, en esos casos, es más fácil simplemente quitar el formulario.
Determinar si los formularios de InfoPath usan código subyacente
Para determinar esto, se recomienda usar la herramienta de escáner de soluciones SandBox de SharePoint. El informe de esta herramienta indica si la solución de espacio aislado procede de un archivo InfoPath. La herramienta también le indica si el ensamblado usado en la solución es inútil, como se describe más adelante en este artículo.
Determinar si los formularios siguen siendo pertinentes
Antes de profundizar en el trabajo de corrección o transformación, es importante que determine si el formulario sigue siendo crítico para su empresa. Si es así, continúe con la sección siguiente; Si no es así, debe pensar en los datos creados mediante este formulario.
Normalmente, los datos se crearon como archivos XML de InfoPath que residen en una lista de SharePoint. Si quita el formulario, ya no podrá visualizar los datos. A veces, eso está bien porque el formulario y los datos ya no son pertinentes. Sin embargo, si desea tener acceso a los datos, puede convertir los datos procedentes de los archivos XML de InfoPath en datos de elementos de lista de SharePoint. Para ello, consulte la aplicación de consola PnP-Transformation EmpRegConsole.
Descargar los formularios de InfoPath (archivo XSN) para su inspección
Si ha confirmado que tiene formularios de InfoPath que requieren trabajo, debe descargar estos formularios. Los formularios de InfoPath con código subyacente se implementan como Biblioteca de formularios o Tipo de contenido de sitio.
Biblioteca de formularios
En este caso, el archivo XSN se encuentra dentro de la carpeta Forms de la biblioteca de formularios en la que se implementó el formulario de InfoPath. Para buscar la biblioteca de formularios, examine el nombre del paquete WSP que sigue esta convención: InfoPath Form_LibName_id
.
Después de conocer la biblioteca de formularios, debe descargar el archivo template.xsn de la carpeta Forms de la biblioteca. Para ello, cree una dirección URL como esta, la dirección URL de la biblioteca + /Forms/template.xsn (por ejemplo, https://contoso.sharepoint.com/sites/infopath1/IHaveCodeBehind/Forms/template.xsn
) y use el explorador para descargar el archivo.
Tipo de contenido del sitio
Los formularios de InfoPath implementados como tipo de contenido de sitio tienen su archivo XSN almacenado en una biblioteca de formularios que se conectó al tipo de contenido en el momento de la implementación del formulario. Como en la sección anterior, puede obtener el nombre de la biblioteca del nombre del paquete WSP. Lo que es diferente esta vez es que el formulario se almacena realmente como un archivo en la biblioteca, por lo que simplemente puede descargarlo de la biblioteca de formularios.
Corrección de los formularios de InfoPath
En las secciones anteriores se mostraron los formularios de InfoPath con código subyacente, pero ¿contienen realmente código subyacente útil? Hay muchos formularios para los que el autor del formulario eligió accidentalmente el botón Editor de código en la cinta de opciones Desarrollador de InfoPath.
Si ha hecho esto, es posible que tenga código subyacente que no haga nada. Al quitarlo, puede convertir el formulario de InfoPath con código subyacente en un formulario de InfoPath sin código subyacente y sin dependencia de soluciones de espacio aislado.
Determinar si el código subyacente de los formularios es inútil
El analizador de soluciones de espacio aislado de SharePoint le indica si el formulario de InfoPath tiene código inútil. Sin embargo, es posible que se pregunte cómo puede distinguir entre código subyacente inútil y necesario porque solo puede corregir código inútil. Si todavía tiene el formulario original (no el que descargó en los pasos anteriores), simplemente puede ver el código.
A continuación se muestra el código vacío predeterminado y, si el código es similar, el formulario se puede corregir quitando el código.
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()
{
}
}
}
En caso de que solo tenga el archivo XSN que descargó en el paso anterior, puede cambiar el nombre del archivo XSN como un archivo cab (por ejemplo, template.cab), extraer el ensamblado y usar herramientas de reflexión de .NET (como el explorador de ensamblados .NET de código abierto de ILSpy y el descompilador) para inspeccionar el código.
Una vista típica de código subyacente inútil es similar a la siguiente figura de ILSpy.
Quitar código subyacente de formularios de InfoPath para corregirlos
Si ha confirmado que el código subyacente es inútil, puede quitarlo haciendo lo siguiente:
Abra el formulario en InfoPath Designer (haga clic con el botón derecho en Diseño).
Vaya a Opciones delformulariode información>de archivo>.
Elija la categoría Programación y, a continuación, elija Quitar código.
Vuelva a publicar el formulario en Publicación> rápidade información> dearchivo.
Desactive la solución de espacio aislado vinculada enSolucionesde configuración del> sitio.
Confirme que el formulario funciona según lo esperado.
Elimine la solución de espacio aislado.
Nota:
Si ya no tiene acceso al archivo InfoPath XSN y al código fuente, puede corregir estos formularios desactivando las soluciones de espacio aislado que tienen código inútil. Haga esto solo para los mencionados en la salida del informe de solución de espacio aislado con IsEmptyInfoPathAssembly = true.
Migración de formularios de InfoPath
Si la guía de las secciones anteriores no era aplicable a los formularios de InfoPath, significa que los formularios siguen siendo relevantes para la empresa y contienen código subyacente que no se puede quitar. Si ese es el caso, la solución típica es alejarse de InfoPath, lo que se puede hacer de las siguientes maneras:
Cree un complemento de SharePoint que aproveche las API remotas para leer y escribir datos de SharePoint.
Cree una aplicación mediante Azure PowerApps o Microsoft Flow.
Compilación de Add-Ins de SharePoint para reemplazar los formularios de InfoPath
Cuando decide usar SharePoint Add-Ins para reemplazar los formularios de InfoPath, tiene varias opciones. A continuación se muestran tres opciones; sin embargo, puede usar variaciones de estas.
Patrones de codificación comunes de InfoPath
Para ayudarle mejor con la conversión del formulario de InfoPath, a continuación se muestra una lista de 11 patrones de codificación comunes de InfoPath y cómo puede implementar estos patrones mediante las tres opciones de complemento de SharePoint.
Para ello, primero hemos desarrollado un formulario de InfoPath de referencia que usa los patrones de codificación de InfoPath más comunes y, a continuación, hemos migrado ese formulario a tres tipos de complementos de SharePoint.
Los vínculos siguientes muestran estos patrones comunes:
- Rellenar campos en la carga de formularios: establecer información de usuario
- Rellenar campos en la carga de formularios: leer información de lista
- Rellenar campos en la carga del formulario: leer datos de lista
- Envío del formulario a través de código
- Cambiar vista después del envío del formulario
- Recuperar datos de usuario
- Leer la recopilación de datos y establecer varios controles
- Carga de datos en cascada
- Carga o eliminación de datos adjuntos
- Adición o eliminación de usuarios de grupos de sitios
- Carga del elemento existente en el formulario
Migración de los datos de InfoPath
Después de mover los formularios de InfoPath a una nueva solución, es posible que también quiera migrar los datos de InfoPath XML a los datos de lista normales de SharePoint o a la capa de datos de su elección. Dado que los archivos de InfoPath son archivos XML, es bastante fácil leerlos y transformarlos.
Para ello, use la aplicación de consola EmpRegConsole PnP-Transformation.
Abrir formularios existentes
En cuanto se deshabilitan las operaciones basadas en código, el código ya no se puede ejecutar en el espacio aislado. Por lo tanto, si tiene formularios que ejecutan código, la apertura de los formularios existentes ya no funciona.
Los pasos siguientes pueden ayudarle a controlar esto:
Si migró el formulario de InfoPath a una nueva solución, lo más probable es que ya haya convertido los datos y, si es así, es bueno.
Si eligió mantener el formulario tal y como está (por ejemplo, porque ya no es relevante para la empresa), pero todavía desea abrir los formularios existentes, puede hacer una de las siguientes acciones:
Quite el código subyacente del formulario y vuelva a publicarlo (consulte la sección Quitar código subyacente de formularios de InfoPath para corregirlos ).
Use el cliente de InfoPath para abrir los formularios.
Migre los datos del formulario a datos de lista de SharePoint sin formato (consulte la sección Migración de los datos de InfoPath ).