Corrigir formulários do InfoPath em soluções de área restrita
Quando você está usando formulários infopath com código atrás, os formulários dependem de soluções de área restrita baseadas em código para executar o code-behind. Este artigo ajuda você a corrigir ou transformar seus formulários infopath para que eles não dependam mais de soluções de área restrita.
Observação
As soluções de área restrita baseadas em código foram preteridas em 2014, e o SharePoint Online iniciou o processo para remover completamente esse recurso. As soluções de área restrita baseadas em código também foram preteridas no SharePoint 2013 e no SharePoint 2016.
Analisar seus formulários do InfoPath
Nesta seção, descrevemos um modelo que você pode usar para analisar e corrigir seus formulários infopath. Dependendo do formulário, você pode corrigir o formulário e reimplantá-lo ou talvez precise se afastar do InfoPath e usar uma abordagem alternativa para obter a funcionalidade necessária.
Antes de tomar qualquer ação, é importante que você avalie a necessidade de negócios para seu formulário. Muitas vezes vemos muitas formas que não são mais relevantes para os negócios e, nesses casos, é mais fácil simplesmente descartar o formulário.
Determinar se os formulários do InfoPath usam code-behind
Para determinar isso, recomendamos que você use a ferramenta de scanner de solução sandbox do SharePoint. O relatório desta ferramenta indica se a solução de área restrita vem de um arquivo InfoPath. A ferramenta também informa se o assembly usado na solução é inútil, conforme descrito posteriormente neste artigo.
Determinar se seus formulários ainda são relevantes
Antes de mergulhar no trabalho de correção/transformação, é importante determinar se o formulário ainda é fundamental para seus negócios. Em caso afirmativo, continue para a próxima seção; se não, você precisa pensar nos dados criados usando esse formulário.
Normalmente, os dados eram criados como arquivos XML do InfoPath que vivem em uma lista do SharePoint. Se você remover o formulário, não poderá mais visualizar os dados. Às vezes, tudo bem porque o formulário e os dados não são mais relevantes. No entanto, se você quiser acessar os dados, poderá converter os dados provenientes dos arquivos XML do InfoPath em dados de itens de lista do SharePoint. Para fazer isso, consulte o aplicativo de console PnP-Transformation EmpRegConsole.
Baixe os formulários do InfoPath (arquivo XSN) para inspeção
Se você tiver confirmado que tem formulários do InfoPath que exigem trabalho, você deve baixar esses formulários. Os formulários InfoPath com code-behind são implantados como Biblioteca de Formulários ou Tipo de Conteúdo do Site.
Biblioteca de Formulários
Nesse caso, o arquivo XSN está dentro da pasta Forms da biblioteca de formulários para a qual o formulário InfoPath foi implantado. Para localizar a biblioteca de formulários, examine o nome do pacote WSP que segue esta convenção: InfoPath Form_LibName_id
.
Depois de conhecer a biblioteca de formulários, você precisará baixar o arquivo template.xsn da pasta Forms da biblioteca. Você pode fazer isso construindo uma URL como essa, URL da biblioteca + /Forms/template.xsn (por exemplo: https://contoso.sharepoint.com/sites/infopath1/IHaveCodeBehind/Forms/template.xsn
), e usando o navegador para baixar o arquivo.
Tipo de Conteúdo do Site
Os formulários InfoPath implantados como Tipo de Conteúdo do Site têm seu arquivo XSN armazenado em uma biblioteca de formulários que estava conectada ao tipo de conteúdo no momento da implantação do formulário. Como na seção anterior, você pode obter o nome da biblioteca do nome do pacote WSP. O que é diferente desta vez é que o formulário é realmente armazenado como um arquivo na biblioteca, para que você possa simplesmente baixá-lo da biblioteca de formulários.
Corrigir seus formulários do InfoPath
As seções anteriores mostraram os formulários Do InfoPath com code-behind, mas esses formulários realmente contêm códigos úteis? Há muitos formulários para os quais o autor do formulário escolheu acidentalmente o botão Editor de Código na faixa de opções Desenvolvedor do InfoPath.
Se você fez isso, talvez tenha um código atrás que não faça nada. Ao removê-lo, você pode converter seu formulário InfoPath com code-behind em um formulário InfoPath sem código atrás e sem dependência de soluções de área restrita.
Determinar se o código-behind dos formulários é inútil
O scanner de solução de área restrita do SharePoint informa se seu formulário InfoPath tem um código inútil. No entanto, você pode se perguntar como você pode distinguir entre código-atrás inútil e necessário, porque você só pode corrigir código inútil. Se você ainda tiver o formulário original (não o que você baixou nas etapas anteriores), basta examinar o código.
A seguir está o código vazio padrão e, se o código for semelhante, o formulário poderá ser corrigido soltando o 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()
{
}
}
}
Caso você tenha apenas o arquivo XSN baixado na etapa anterior, você pode renomear o arquivo XSN como um arquivo de táxi (por exemplo, template.cab), extrair o assembly e usar ferramentas de reflexão do .NET (como o navegador de assembly e descompilador do .NET de código aberto do ILSpy) para inspecionar o código.
Uma exibição típica de code-behind inútil se parece com a figura a seguir no ILSpy.
Soltar o código atrás de formulários do InfoPath para corrigi-los
Se você tiver confirmado que seu code-behind é inútil, você pode solucioná-lo fazendo o seguinte:
Abra o formulário no InfoPath Designer (clique com o botão direito do mouse em Design).
Vá paraOpções de Formuláriode Informações> de Arquivo>.
Escolha a categoria Programação e escolha Remover Código.
Publique o formulário novamente naPublicação Rápidade Informações de>Arquivo>.
Desativar a solução de área restrita vinculada emSoluçõesde Configurações do> Site.
Confirme se o formulário funciona conforme o esperado.
Exclua a solução de área restrita.
Observação
Se você não tiver mais acesso ao arquivo XSN do InfoPath e ao código-fonte, ainda poderá corrigir esses formulários desativando as soluções de área restrita que têm código inútil. Faça isso somente para os mencionados na saída do relatório da solução de área restrita com IsEmptyInfoPathAssembly = true.
Migrar seus formulários do InfoPath
Se as diretrizes nas seções anteriores não foram aplicáveis aos formulários do InfoPath, isso significa que seus formulários ainda são relevantes para os negócios e contêm code-behind que você não pode descartar. Se esse for o caso, a solução típica é se afastar do InfoPath, o que pode ser feito das seguintes maneiras:
Crie um Suplemento do SharePoint que aproveita APIs remotas para ler/gravar dados do SharePoint.
Crie um aplicativo usando o Azure PowerApps ou o Microsoft Flow.
Criar Add-Ins do SharePoint para substituir os formulários do InfoPath
Ao optar por usar o SharePoint Add-Ins para substituir os formulários do InfoPath, você terá várias opções. A seguir estão três opções; no entanto, você pode usar variações dessas.
Padrões comuns de codificação do InfoPath
Para ajudar melhor você a converter seu formulário InfoPath, a seguir está uma lista de 11 padrões comuns de codificação do InfoPath e como você pode implementar esses padrões usando as três opções de Suplemento do SharePoint.
Para fazer isso, primeiro desenvolvemos um formulário infopath de referência que usa os padrões de codificação infopath mais comuns e, em seguida, migramos esse formulário para três sabores de suplemento do SharePoint.
Os links a seguir mostram esses padrões comuns:
- Preencher campos na carga do formulário – definir informações do usuário
- Preencher campos na carga do formulário – ler informações da lista
- Preencher campos na carga do formulário – ler dados da lista
- Enviar o formulário por meio de código
- Modo de exibição de alternância após envio de formulário
- Recuperar dados do usuário
- Ler a coleta de dados e definir vários controles
- Carga de dados em cascata
- Carregar ou excluir anexos
- Adicionar ou remover o usuário de grupos de sites
- Carregar item existente no formulário
Migrar seus dados do InfoPath
Depois de mover seus formulários do InfoPath para uma nova solução, você também pode querer migrar seus dados do InfoPath XML para dados regulares da lista do SharePoint ou para a camada de dados de sua escolha. Como os arquivos InfoPath são arquivos XML, é bastante fácil lê-los e transformá-los.
Para fazer isso, use o aplicativo de console PnP-Transformation EmpRegConsole.
Abrir formulários existentes
Assim que as operações baseadas em código forem desabilitadas, o código não poderá mais ser executado na área restrita. Portanto, se você tiver formulários que executam código, a abertura dos formulários existentes não funcionará mais.
As seguintes etapas podem ajudá-lo a lidar com isso:
Se você migrou seu formulário InfoPath para uma nova solução, provavelmente já converteu seus dados e, se for o caso, você será bom.
Se você optar por manter o formulário como está (por exemplo, porque ele não é mais relevante para os negócios), mas ainda deseja abrir os formulários existentes, você pode fazer um dos seguintes procedimentos:
Remova o code-behind do formulário e republice-o (consulte o drop code-behind dos formulários InfoPath para corrigi-los ).
Use o Cliente InfoPath para abrir os formulários.
Migre os dados do formulário para os dados de lista simples do SharePoint (consulte a seção Migrar seus dados do InfoPath ).