Есть система багтреккинга, сделанная на Sharepoint с использованием Infopath-форм.
Формы имеют несколько копий и в зависимости от принадлежности сотрудника в AD, ему подставляется своя копия и люди из разных отделов могут редактировать только свои поля:
Задача:
После экспорта узла из вида пропало поле «Статуса». То есть на форме оно есть, а в колонках видов и настройках списка уже нет.
Решение:
— Переопубликовать форму в Infopath Designer(колонка должна появиться, но без значений).
— Обновить все элементы списка, чтобы значения появились в видах SharePoint.
Программно это можно сделать например так
using (SPSite site = new SPSite("http://server/webName ")) using (SPWeb web = site.OpenWeb()) { SPList list = web.GetList("http://server/webname/libName/"); foreach (SPListItem item in list.Items) { try { Console.Write("Updating " + item.ID.ToString()); item.SystemUpdate(); Console.WriteLine(".. Ok."); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } }
или через Powershell:
$web = Get-SPWeb -identity "http://server/webName" $list = $web.Lists["listName"] $list.Items | ForEach-Object { Write-Host "Updating " $_.Name; $_.SystemUpdate(); } $web.Dispose()
p.s.: при этом пользовательские виды с участием этих “пропавших и возвращённых” полей возможно прийдётся пересоздать