невозможно удалить столбцы сайта, на которые нет ссылок - PullRequest
2 голосов
/ 10 февраля 2011

Я только что создал пару столбцов сайта и типов контента, которые ссылаются на них через VS2010. Я обновил одно из полей, а затем попытался повторно развернуть его, но после возврата развернуть не удалось, поскольку ранее созданные столбцы сайта все еще были там. Я попытался удалить их вручную из пользовательского интерфейса и получил окно с сообщением:

Столбцы сайта, включенные в типы контента, удалить нельзя. Удалить все ссылки на этот сайт столбец перед его удалением.

Я покопался в SharePoint Manager и не нашел никаких ссылок, поэтому я использовал powershell для перечисления всех типов контента и списков в поисках ссылок на столбцы моего сайта и ничего не нашел.

Я пытался удалить с помощью PowerShell, как это:

$web.Fields.Delete("StartTime")

что привело к этой ошибке:

Exception calling "Delete" with "1" argument(s): "Site columns which are included in 
content types or on lists cannot be deleted. Please remove all instances of this site 
column prior to deleting it."
At line:1 char:19
+ $web.Fields.Delete <<<< ("StartTime")
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

Наконец, простая проверка столбцов в PowerShell показывает следующее:

Title                               Id                                                         CanBeDeleted ParentList                                                       Sealed ListsFieldUsedIn                   
-----                               --                                                         ------------ ----------                                                       ------ ----------------                   
Start Time OBE                      6fa0d85b-9af1-408b-835f-d4c66536...                                True                                                                   False {}                                 
Time Tracker Tags                   92bc866b-0415-45f0-b431-d4df69c4...                                True                                                                   False {}                                 

У меня есть опыт работы с MOSS 2007 и новичком в SP2010, но я никогда не видел, чтобы это случилось раньше. У кого-нибудь есть намеки?

Ответы [ 5 ]

2 голосов
/ 01 апреля 2013

Вам необходимо найти и удалить как типы контента, которые используют столбец сайта, так и любые списки или библиотеки, которые используют столбец сайта, который вы пытаетесь удалить. Используйте PowerShell, чтобы получить объект столбца сайта, используя что-то вроде этого:

 $column = $web.Fields[“Column Display Name”]

Затем найдите все места, где он используется, используя что-то вроде этого:

$column.ListsFieldUsedIn()

, который выплевывает два GUIDs - WebID и ListID - каждого места, где используется этот тип контента.

Ниже приведен сценарий PowerShell, который перебирает все идентификаторы GUID списка, возвращенные из ListFieldUsedIn (), а затем находит вложенную веб-страницу и список, соответствующий этому идентификатору GUID, и распечатывает имя списка и URL-адрес веб-каталога для каждого использования:

$site = Get-SPSite "http://sharepoint"
$rootweb = $site.rootweb
$siteColumnToRemove = "Column Display Name”
$sc = $rootweb.Fields[$siteColumnToRemove]
if ($sc)
{
    write-host "  Found Site Column '" $sc.Title "' in gallery" -ForegroundColor Gray
    foreach( $listusage in $sc.ListsFieldUsedIn() )
    {
        $listID = $listusage.ListID            
        foreach ($subweb in $site.allwebs)
        {
            foreach ($list in $subweb.lists)
            {
                if ($list.ID -eq $listID)
                {                     
                     write-host "    Site Column '" $sc.Title "' used in list '" $list.Title "' in site '" $subweb.Url "'" -BackgroundColor Yellow -ForegroundColor Black
                }
            }
        }
    }
}
2 голосов
/ 19 февраля 2012

У меня была такая же проблема, и я смог удалить ее с помощью SharePoint Designer - не уверен, сможет ли кто-нибудь проверить, что это работает для них.

2 голосов
/ 22 февраля 2011

Также происходит с SharePoint 2010. Попробуйте посмотреть на:

$field.AllowDeletion = $TRUE
$field.Update()

Когда я установил это, казалось, работает. Теперь я просто не могу повторить это, чтобы доказать свою точку зрения. Типичный.

0 голосов
/ 06 февраля 2015

Я советую вам никогда не удалять столбец сайта, когда он используется.Я видел, что семейства сайтов стали полностью непригодными из-за проблем, связанных с удалением столбцов сайта или типов контента.

Если вам больше не нужен столбец сайта, просто спрячьте его.

0 голосов
/ 29 февраля 2012

Прошло много времени, и я уже давно ушел от этой проблемы, но я думаю, что окончательным ответом было то, что были типы контента, основанные на определенном столбце сайта, которые не были обнаружены SPM.

Я думаю, что после того, как я убрал все пользовательское с сайта, я смог нормально удалить.

...