Исправление форм InfoPath в решениях песочницы
При использовании форм InfoPath с кодом программной части формы зависят от решений песочницы на основе кода для выполнения кода программной части. Эта статья поможет вам исправить или преобразовать формы InfoPath, чтобы они больше не зависели от решений песочницы.
Примечание.
Изолированные решения на основе кода устарели в 2014 году. Процесс полного удаления этой возможности начался с SharePoint Online. Изолированные решения на основе кода также не рекомендуются к использованию в SharePoint 2013 и SharePoint 2016.
Анализ форм InfoPath
В этом разделе описана модель, которую можно использовать для анализа и исправления форм InfoPath. В зависимости от формы можно либо исправить форму и повторно развернуть ее, либо вам может потребоваться отойти от InfoPath и использовать альтернативный подход для получения необходимых функциональных возможностей.
Прежде чем предпринимать какие-либо действия, важно оценить бизнес-потребности в форме. Мы часто видим много форм, которые больше не являются бизнес-релевантными, и в таких случаях проще просто удалить форму.
Определение того, используется ли код программной части в формах InfoPath
Чтобы определить это, рекомендуется использовать средство проверки решения Песочницы SharePoint. Отчет из этого средства указывает, поступает ли решение песочницы из файла InfoPath. Средство также сообщает, является ли используемая сборка в решении бесполезной, как описано далее в этой статье.
Определите, являются ли формы по-прежнему актуальными
Прежде чем перейти к работе по исправлению и преобразованию, важно определить, является ли форма по-прежнему критически важной для вашего бизнеса. Если это так, перейдите к следующему разделу. Если нет, необходимо подумать о данных, созданных с помощью этой формы.
Как правило, данные создаются в виде XML-файлов InfoPath, которые живут в списке SharePoint. Если вы удалите форму, вы больше не сможете визуализировать данные. Иногда это нормально, так как форма и данные больше не актуальны. Однако если вы хотите получить доступ к данным, можно преобразовать данные, поступающие из XML-файлов InfoPath, в данные элементов списка SharePoint. Для этого см. консольное приложение EmpRegConsole PnP-Transformation.
Скачивание форм InfoPath (XSN-файл) для проверки
Если вы подтвердили наличие форм InfoPath, требующих работы, необходимо скачать эти формы. Формы InfoPath с кодом программной части развертываются как библиотека форм или тип контента сайта.
Библиотека форм
В этом случае XSN-файл находится в папке Forms библиотеки форм, в которой была развернута форма InfoPath. Чтобы найти библиотеку форм, просмотрите имя пакета WSP, которое соответствует следующему соглашению: InfoPath Form_LibName_id
.
После того как вы узнаете библиотеку форм, необходимо скачать файл template.xsn из папки Forms библиотеки. Это можно сделать, создав URL-адрес, подобный этому, URL-адрес библиотеки + /Forms/template.xsn (например, https://contoso.sharepoint.com/sites/infopath1/IHaveCodeBehind/Forms/template.xsn
) и с помощью браузера скачать файл.
Тип контента сайта
Формы InfoPath, развернутые как тип контента сайта, хранят XSN-файл в библиотеке форм, подключенной к типу контента во время развертывания формы. Как и в предыдущем разделе, имя библиотеки можно получить из имени пакета WSP. На этот раз форма фактически хранится в виде файла в библиотеке, поэтому ее можно просто скачать из библиотеки форм.
Исправление форм InfoPath
В предыдущих разделах показаны формы InfoPath с кодом программной части, но содержат ли эти формы полезный код программной части? Существует множество форм, для которых автор формы случайно нажмел кнопку Редактор кода на ленте InfoPath Developer .
Если вы сделали это, возможно, у вас есть код программной части, который ничего не делает. Удалив ее, вы можете преобразовать форму InfoPath с кодом программной части в форму InfoPath без кода программной части и без зависимости от решений песочницы.
Определение бесполезности кода программной части форм
Сканер решения для песочницы SharePoint сообщает, есть ли в форме InfoPath бесполезный код. Однако вы можете задаться вопросом, как отличить бесполезное и необходимое код программной части, так как можно исправить только бесполезный код. Если у вас по-прежнему есть исходная форма (не та, что вы скачали на предыдущих шагах), вы можете просто просмотреть код.
Ниже приведен пустой код по умолчанию, и если код аналогичен, форму можно исправить, удалив код.
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()
{
}
}
}
Если у вас есть только XSN-файл, скачанный на предыдущем шаге, можно переименовать XSN-файл в CAB-файл (например, template.cab), извлечь сборку и использовать средства отражения .NET (такие как браузер сборки .NET с открытым кодом ILSpy и декомпилер) для проверки кода.
Типичное представление бесполезного кода программной части выглядит так, как показано на следующем рисунке в ILSpy.
Удаление кода программной части из форм InfoPath, чтобы исправить их
Если вы подтвердили, что код программной части бесполезен, его можно удалить, выполнив следующие действия:
Откройте форму в InfoPath Designer (щелкните правой кнопкой мыши конструктор).
Перейдите враздел Параметры формысведений о>файле>.
Выберите категорию Программирование и нажмите кнопку Удалить код.
Опубликуйте форму еще раз в разделеБыстрая публикациясведений о>файле>.
Отключите связанное решение песочницы в разделе Параметры сайта Решения>.
Убедитесь, что форма работает должным образом.
Удалите решение песочницы.
Примечание.
Если у вас больше нет доступа к XSN-файлу InfoPath и исходному коду, вы по-прежнему можете исправить эти формы, деактивируя решения песочницы с бесполезным кодом. Это можно сделать только для тех, которые упоминаются в выходных данных отчета об решении песочницы с параметром IsEmptyInfoPathAssembly = true.
Перенос форм InfoPath
Если рекомендации, приведенные в предыдущих разделах, не применимы к формам InfoPath, это означает, что ваши формы по-прежнему актуальны для бизнеса и содержат код программной части, который нельзя удалить. В этом случае типичное решение заключается в том, чтобы отойти от InfoPath, что можно сделать следующими способами:
Создайте надстройку SharePoint, которая использует удаленные API для чтения и записи данных SharePoint.
Создайте приложение с помощью Azure PowerApps или Microsoft Flow.
Создание Add-Ins SharePoint для замены форм InfoPath
Если вы решили использовать SharePoint Add-Ins для замены форм InfoPath, у вас есть несколько вариантов. Ниже приведены три варианта. однако можно использовать их варианты.
Распространенные шаблоны кодирования InfoPath
Чтобы упростить преобразование формы InfoPath, ниже приведен список из 11 распространенных шаблонов кодирования InfoPath и способы реализации этих шаблонов с помощью трех вариантов надстройки SharePoint.
Для этого мы сначала разработали эталонную форму InfoPath , которая использует наиболее распространенные шаблоны кодирования InfoPath, а затем перенесли ее в три варианта надстройки SharePoint.
Эти общие шаблоны показаны по следующим ссылкам:
- Заполнение полей при загрузке формы — установка сведений о пользователе
- Заполнение полей при загрузке формы — чтение сведений о списке
- Заполнение полей при загрузке формы — чтение данных списка
- Отправка формы с помощью кода
- Переключение представления после отправки формы
- Получение пользовательских данных
- Чтение сбора данных и установка нескольких элементов управления
- Каскадная загрузка данных
- Отправка или удаление вложений
- Добавление или удаление пользователей из групп сайтов
- Загрузка существующего элемента в форме
Перенос данных InfoPath
После перемещения форм InfoPath в новое решение также может потребоваться перенести данные из InfoPath XML в обычные данные списка SharePoint или на выбранный уровень данных. Так как файлы InfoPath — это XML-файлы, их довольно легко считывать и преобразовывать.
Для этого используйте консольное приложение EmpRegConsole PnP-Transformation.
Открытие существующих форм
Как только операции на основе кода будут отключены, код больше не сможет выполняться в песочнице. Таким образом, если у вас есть формы, выполняющие код, открытие существующих форм больше не будет работать.
Следующие действия помогут вам справиться с этим.
Если вы перенесли форму InfoPath в новое решение, скорее всего, вы уже преобразовали данные, и если да, то все хорошо.
Если вы решили сохранить форму как есть (например, потому, что она больше не относится к бизнесу), но вы по-прежнему хотите открыть существующие формы, можно выполнить одно из следующих действий:
Удалите код программной части из формы и повторно опубликуйте его (см . раздел Удаление кода программной части из форм InfoPath, чтобы исправить их ).
Используйте InfoPath Client, чтобы открыть формы.
Перенос данных формы в обычный список SharePoint (см. раздел Перенос данных InfoPath ).