none
Хочу сделать видимым поле для кастомного ContentType... RRS feed

  • Вопрос

  • Добрый день.
    Есть список тип содержимого которого называется "Проект SAP"

    Проблема в том, что этот тип контента задолго до меня "причесали". Сделали некоторые поля скрытыми. Это можно увидеть, например в SharePoint Manager 2013 по свойству поля КОД "ShowInEditForm = false"

    Мне этот "Код" надо вытащить на форму редактирования элемента списка.

    Что я делаю для этого:

    $env:SPpath = "${env:CommonProgramFiles}\Microsoft Shared\web server extensions\16\"
    [System.Reflection.Assembly]::LoadFrom("$env:SPPath\ISAPI\Microsoft.SharePoint.dll")
    $site = New-Object -TypeName "Microsoft.SharePoint.SPSite" -ArgumentList "http://portal/projects";
    $web = $site.OpenWeb();
    
    $list = $web.GetList("http://portal/projects/Projects/Forms/AllProjects.aspx");
    $ct = $list.ContentTypes["Проект SAP"].Fields.GetFieldByInternalName("SapProjectId");
    
    $ct.ShowInEditForm = $true;
    $ct.Update();
    

    Всё хорошо до момента, когда приходится обновить поле. После $ct.Update() получаю ошибку:

    Exception calling "Update" with "0" argument(s): "This functionality is unavailable for fields not associated with a list."

    Не совсем понимаю ошибку... Почему поле не свзано со списком? Я ведь в контексте списка всё это делаю.. 

    26 октября 2017 г. 4:37

Ответы

  • Ситуация такая:

    Я в новый ContentType добавляю новое поле "newSAPId" и туда же добавляю вторым, старое поле "SapProjectId". Применяю вот этот код:

    $web = Get-SPWeb http://portal/projects;
    $list = $web.GetList("http://portal/projects/SAPRecallLib/Forms/AllItems.aspx");
    $field = $list.Fields.GetFieldByInternalName("SapProjectId");
    
    $field.ShowInEditForm = $true;
    $field.Update();

    ..что для поля "newSAPId" что для "SapProjectId" всё отрабатывает нормально.

    Поля нормально скрываются и появляются, в зависимости от:  

    $field.ShowInEditForm = $true/$false;

    Но стоит мне на мою новую библиотеку документов прикрутить старый ContentType "Проект SAP" - начинаются сюрпризы.

    Никакое поле не меняет своего состояния при ТОМ ЖЕ КОДЕ.

    т.е. один и тот же код для разных ContentType-ов для одного и того же поля: SapProjectId. В случае с новым ContentType работает, а в случае старого - нет.

    Т.е. явно приложили ручки к старому ContentType-у и что-то там понастраивали. Только я понять не могу, что и где смотреть теперь мне?

    Т.е. отсутствует связь между полем списка и полем ContentType.


    27 октября 2017 г. 11:31
  • Конечно можно продиагностировать до совершения всех манипуляций, но частично работу сделать придётся.

    1.создать новый тип контента и наполнить его теми же полями.

    2.Добавить тип контента в таблицу и сделать его доступным для добавления.

    3.при добавлении новой записи в таблицу вручную проверить, чтобы был выбран новый тип контента.

    4.запустить код powershell для записи с новым контент типом и проверить форму для редактирования

    Убедившись, что всё работает, сделать скрипт для переноса.

    Тестовый sharepoint есть?

    Вспомнил, что так же сталкивался с подобными проблемами. Насколько я помню, сам был виноват в них. Не зная правильного пути создания кастомных списков, я многократно добавлял и удалял поля и типы контента, что приводило к похожим последствиям. В таких ситуациях лучше найти откуда идёт проблема и пересоздать узел. Это быстрее, чем искать причину.


    27 октября 2017 г. 13:38

Все ответы

  • Добрый день!

    Вот интересная строка:

    Exception calling "Update" with "0" argument(s): "This functionality is unavailable for fields not associated with a list."

    Судя по описанию, должны быть 2-а аргумента (если конечно нет перезагруженных функций Update:

    https://msdn.microsoft.com/en-us/library/office/ms475130.aspx

    Попробуйте .Update(false,true);

    Так же нужно проверить сам contentType через портал (может быть он ReadOnly или Sealed, тоже проверьте это), именно поэтому первый параметр поставил false, чтобы не трогать всю иерархию наследования SapProjectId. 

    Так же стоит проверить через debug находит ли по имени контент тип.

    А почему собственно нельзя поменять видимость поля зайдя в типы контента через интерфейс настроек самого портала?

    26 октября 2017 г. 7:13
  • Спасибо за ответ. Я поясню:
    Сам ContentType я проверил он существует и находится по имени:

    $ct = $list.ContentTypes["Проект SAP"];
    if ($ct -ne $null) {
        Write-Host 'Type found!';
    } else {
        Write-Host 'Type not found!';
    }
    

    Пишет что "Type found!"
    Не ReadOnly и не Sealed (посмотрел через SharePoint Manager).

    Про видимость поля... А оно и так видимо. Т.е. стоит "Optional", на против полей которые скрыты стоит "Hidden"

    Проверил с Update ($false, $true):

    Пишет: Cannot find an overload for "Update" and the argument count: "2".

    Если указывать один параметр, то первоначальная ошибка.

    26 октября 2017 г. 7:37
  • Мне думается, что надо смотреть в сторону:
    ..for fields not associated with a list

    Каким образом асоциировать моё поле со списком?

    26 октября 2017 г. 7:43
  • А что даёт визуальный осмотр самого списка AllProjects?

    Контент сайта/Параметры(на списке)/Дополнительные параметры/

    Разрешить управление типами контента - да

    Типы контента - Проект SAP

    Здесь всё ок?

    А в Параметры сайта/Типы контента/контент Проект SAP/поле SapProjectId Скрытый если поменять на Необязательный (может содержать данные) - или нужно, чтобы всё же это поле было скрытым?

    26 октября 2017 г. 8:05
  • Нашёл клёвый пример на C#, но применимо и для Shell:

    SPList myList;
    ...
    SPField titleField = myList.Fields.GetField("Title");
    //titleField.PushChangesToLists = true; <-- doesn't seem to make a difference
    titleField.ShowInEditForm = false;
    titleField.ShowInDisplayForm = false;
    titleField.ShowInNewForm = false;
    titleField.Hidden = true;
    titleField.Update();
    //myList.Update(); <-- make no difference
    Из примера получается, что свойство ShowInEditForm устанавливается не у поля ContentType, а у поля SPField. 

    26 октября 2017 г. 8:11
  • А что даёт визуальный осмотр самого списка AllProjects?

    Контент сайта/Параметры(на списке)/Дополнительные параметры/

    Разрешить управление типами контента - да

    Типы контента - Проект SAP

    Здесь всё ок?

    А в Параметры сайта/Типы контента/контент Проект SAP/поле SapProjectId Скрытый если поменять на Необязательный (может содержать данные) - или нужно, чтобы всё же это поле было скрытым?

    Управление типами контента - Да.
    Типы контента - там их много, но по умолчанию я сделал "Проект SAP".

    По поводу поля SapProjectId - так называется поле у ContentType-а а у списка (с этим ContentType) это поле "Код"

    По поводу скрыто не скрыто поле - оно не скрыто. Если смотреть через GUI у него стоит "Необязательное" (Может содержать данные)

    26 октября 2017 г. 8:35
  • Нашёл клёвый пример на C#, но применимо и для Shell:

    SPList myList;
    ...
    SPField titleField = myList.Fields.GetField("Title");
    //titleField.PushChangesToLists = true; <-- doesn't seem to make a difference
    titleField.ShowInEditForm = false;
    titleField.ShowInDisplayForm = false;
    titleField.ShowInNewForm = false;
    titleField.Hidden = true;
    titleField.Update();
    //myList.Update(); <-- make no difference
    Из примера получается, что свойство ShowInEditForm устанавливается не у поля ContentType, а у поля SPField. 

    А такой вариант я тоже пробовал. Кстати отработало на ура! и без ошибок! Но толку никакого. Я так понимаю, что нужно работать именно с типом контента, а не со списком, т.к. в списке как раз там всё прозрачно. "Погоду делает" ContentType
    26 октября 2017 г. 8:37
  • Мысли:

    1. А что если, через интерфейс портала, где стоит Необязательное поле, сделать его Скрытым (сохранить), а потом вернуть(сохранить). Возможно это сделает поле видимым в форме.

    2. Или можно зайти через Sharepoint Designer и создать новую форму для редактирования (поле должно быть не скрытым в контент типе). Сделать её формой по умолчанию.

    26 октября 2017 г. 8:54
  • Да попробовал уже. Ноль эмоций.

    Какой то замкнутый круг получается...

    26 октября 2017 г. 9:14
  • Сейчас интересную наверное вещь напишу...

    Я зашел сейчас не в свойства списка, а в свойств сайта, где развернута эта библиотека документов.
    "Параметры сайта \ Типы контента сайта \ Проект SAP"

    И что я там вижу: Поле "Код" там вовсе не код и не "SapProjectId" а называется оно "Номер проекта SAP"

    26 октября 2017 г. 9:21
  • Так это... можно же посмотреть откуда ноги растут.

    /Контент сайта/список AllProjects/Параметры

    Листаем вниз где Столбцы и видим напротив каждого столбца написано (Используется в) из какого контент типа оно взято.

    Если контент тип не указан, то поле было добавлено в список без типа контента.

    26 октября 2017 г. 9:51
  • Указано. Используется в "Проект SAP"

    Второй день уже бадаюсь с этой ошибкой. Толку ноль. Ошибка всё та же самая.

    Exception calling "Update" with "0" argument(s): "This functionality is unavailable for fields not associated with a list."

    • Изменено VARD32 26 октября 2017 г. 9:57
    26 октября 2017 г. 9:54
  • Предлагают использовать FieldLinks вместо Fields

    http://gorbadei.blogspot.com/2013/05/error-this-functionality-is-unavailable.html

    26 октября 2017 г. 10:18
  • Пример хороший.

    Только вот здесь: $list.ContentTypes["CTName"].FieldLinks["fieldName"].someProperty = someValue

    вместо "someProperty"  доступно только свойство "ShowInDisplayForm".

    А мне нужно именно "ShowInEditForm".  


    26 октября 2017 г. 10:51
  • А так сработает?

    SPFieldLink link = ct.FieldLinks[“fieldname”];
    SPField field = ct.Fields[link.Id];
    field.ShowInEditForm = false;

    26 октября 2017 г. 10:59
  • это С# ?
    26 октября 2017 г. 11:08
  • $web = Get-SPWeb http://web-url
    $list = $web.Lists["listName"]
    $fieldlink = $list.ContentTypes["CTName"].FieldLinks["fieldName"]

    $field = $list.ContentTypes["CTName"].Fields[$fieldlink.Id]

    $field.ShowInEditForm = true
    $list.ContentTypes["CTName"].Update()
    $web.Dispose()

    ------------------------------

    На PowerShell не пишу, но возможно правильно адаптировал

    26 октября 2017 г. 11:21
  • $web = Get-SPWeb http://web-url
    $list = $web.Lists["listName"]
    $fieldlink = $list.ContentTypes["CTName"].FieldLinks["fieldName"]

    $field = $list.ContentTypes["CTName"].Fields[$fieldlink.Id]

    $field.ShowInEditForm = true
    $list.ContentTypes["CTName"].Update()
    $web.Dispose()

    ------------------------------

    На PowerShell не пишу, но возможно правильно адаптировал

    Вот этого: $field.ShowInEditForm = true      там нет! Есть только ShowInDisplayForm.
    26 октября 2017 г. 11:33
  • Не может быть. Я же уже не FieldLink использую, а Fields Почему тогда здесь есть? $ct = $list.ContentTypes["Проект SAP"].Fields.GetFieldByInternalName("SapProjectId");
    26 октября 2017 г. 11:42
  • Да, это что то я уже напутал. Дпействительно есть. Но та же ошибка... абсолютно та же.. ((
    26 октября 2017 г. 11:49
  • Идеи есть, но пока за рулем... Позже напишу.
    26 октября 2017 г. 11:56
  • Я не понимаю в чем грабли??? Может потому что у меня:

    1) не простой список, а библиотека документов?
    2) Все примеры что в интернете они для 2010-2013 SharePoint? а у меня 2016!

    3) Где-то что-то "подкрутили" и запретили изменять свойства?
    4) Может это быть из-за того, что тип контента "Проект SAP" определён на уровне сайта, а я пытаюсь изменить свойство у типа контента списка? Но откуда списку взять его? С того же типа контента сайта..

    26 октября 2017 г. 11:57
  • НЕсуществующее имя поля напишите. Ошибка та же?
    26 октября 2017 г. 12:11
  • Ну тогда ошибка другая: 
    The property 'ShowInEditForm' cannot be found on this object. Verify that the property exists and can be set.
    26 октября 2017 г. 12:21
  • А если взять такой код:

    $web = Get-SPWeb http://portal/projects;
    
    $list = $web.Lists["Справочник проектов SAP"];
    $field = $list.ContentTypes["Проект SAP"].Fields.GetFieldByInternalName('bla-bla-blaSapProjectId');
    
    $field.ShowInEditForm = $true;
    $field.Update();

    То ошибок будет две:
    Exception calling "GetFieldByInternalName" with "1" argument(s): "Column 'bla-bla-blaSapProjectId' does not exist. It may have been deleted by another user.

    Exception calling "Update" with "0" argument(s): "This functionality is unavailable for fields not associated with a list.

     
    26 октября 2017 г. 12:36
  • Вот так ещё не пробовали, только false нужно поставить на hidden:

    https://social.technet.microsoft.com/Forums/sharepoint/en-US/0eeaf106-cbee-4937-a962-8ca9f5effb22/programmatically-hiding-a-content-type-field?forum=sharepointgeneralprevious

    Я раньше не обращал внимание, что пишут не true, а $true в powershell.

    Также нашел статью, которая рассказывает как правильно менять contentType в powershell

    https://social.technet.microsoft.com/wiki/contents/articles/31770.sharepoint-online-content-types-in-powershell-known-errors.aspx

    Конкретно я понял, что в вашем случае нужно делать Update с одним параметром .Update($false), поскольку ваш контент тип не породил потомков.

    Так же написано следующее:

    Когда вы пытаетесь добавить поле как Field ContentType.Fields.Add(Field field) к Field Collection типа контента, вы получите ошибку:

    Exception calling "ExecuteQuery" with "0" argument(s): "This functionality is unavailable for field collections not associated with a list."

    То есть нужно добавлять ссылку на поле, а поле добавится автоматом. Из этого описания получается, что у вас поле SapProjectId (видимо во время проектирования) село криво.

    А именно, ссылка была добавлена, а атрибуты поля (содержащиеся в Field) сели не до конца. Но это как я понял, а как это на самом деле...

    Теперь главный вопрос что делать?

    Я бы наверное добавил новое поле на сайт, потом это же поле добавил в тип контента, потом автоматом перенёс бы все данные из поля SapProjectId в новое поле (одна проблема, внутренние имена у них не совпадают, может можно переименовать и внутреннее. Или может быть можно под другим названием добавить то же поле сайта, а при переименовании всё будет как надо), удалил бы SapProjectId и переименовал новое поле. Перед операцией на пациенте, конечно же, сделать бэкап фермы и списка.







    • Изменено agemlex77 27 октября 2017 г. 2:51 Дополнение
    26 октября 2017 г. 15:40
  • Добрый день.

    Я сейчас создал свой ContentType, назначил его одним из ContentType-ов свой новой Библиотеки.

    И всё то же самое. т.е. вывод напрашивается такой. Я чего то не понимаю. Не понимаю как работает механизм показа/скрытия полей.

    Не хватает мне информации... ((

    27 октября 2017 г. 5:55
  • Странно это всё. В sharepoint 2013 неоднократно создавал типы контента, скрывал и показывал поля. Всё отрабатывало корректно. Может стоит не использовать стандартные методы создания форм показа и редактирования? Может создавать все формы на базе WebPart или InfoPath. Там отображение полей - управляемы или на уровне дизайна или на уровне выполнения.

    Может какой то патч нужно на Sharepoint накатить? Не думаю, что дело в вашем незнании механизма, там всё стандартно:

    1. Создал столбец сайта (отдельно или уже из создания контента)

    2. Создал контент, указав какие поля будут скрытые, какие обязательные, какие опциональные

    3. Добавил к списку или библиотеке только тип контента, не добавляя самих полей, поскольку поля добавятся автоматом. Удалил лишние типы контента. Настроил порядок отображения в видах полей.

    Если найду ещё что то полезное, напишу.


    • Изменено agemlex77 27 октября 2017 г. 6:14 Дополнение
    27 октября 2017 г. 6:12
  • Конечно, если в 3-м пункте добавлять сначала поля, а потом тип контента, то такая ошибка возможна, поскольку сядут дублированные поля. Одни напрямую как поля сайта, а другие как ссылка на поля контента+копия атрибутов полей контента (чтобы была возможность менять название поля и его отображение в формах). При этом программа может путаться в полях и обрабатывать первыми поля сайта, а до полей контента не добираться. 
    27 октября 2017 г. 6:21
  • И ещё мысль: Может 2-а типа контента с одним именем. Один на уровне фермы(или на уровне вышестоящего сайта), другой на уровне сайта. Меняете один, а нужно другой и в коде тоже не понятно к какому из типов обращаетесь.
    27 октября 2017 г. 6:45
  • https://msdn.microsoft.com/en-us/library/aa543680(v=office.12).aspx - вот ещё хорошее описание иерархии полей, типов контента и списков.

    Если я правильно понял, то:

    Поле (Field) это что то типа класса в программировании, на его основе рождается (Класс наследник Поля, который переопределяет все необходимые атрибуты, опять же аналогия с программированием) тип контента (ContentType), который ссылается на Поле, но в то же время содержит самостоятельные атрибуты, которые были наследованны из поля (имя, отображение и.т.д.), Следующий узел цепочки - список (Это уже объект, который рождён от Типа контента), опять же с какими то атрибутами, наследуемыми от Типа контента.

    Если так, то следующая идея менять атрибуты видимости на уровне Списка (если получится, то значит не работает автоматическое копирование атрибутов от Типа контента к списку).

    И ещё мысль:

    Если FieldReference не содержит нужного Атрибута для разрешения отображения поля в форме, то его можно попробовать добавить, потому, что эти Атрибуты должны там быть, если я правильно понял иерархию и взаимодействие всех узлов.


    • Изменено agemlex77 27 октября 2017 г. 7:01 Дополнение
    27 октября 2017 г. 7:00
  • Так в том то и дело.
    Что нормальным человеческим способом поля скрываются через свойство Hide.
    Т.е. если у поля свойство Hide = $true то в нормальном состоянии в форме редактирования оно не видится.

    Возвращаем обратно: Hide = $false - поле видится и доступно.

    У меня ситуация же другая. ДО меня потрудился другой человек. И не стал заморачиваться за Hide.

    Он зачем то полез дальше, и (каким-то неведомым мне способом) изменил свойства поля ShowInEditForm. Которое я ни при каком раскладе изменить не могу.

    Вываливается ошибка:Exception calling "Update" with "0" argument(s): "This functionality is unavailable for fields not associated with a list.

    Горечь ситуации в том, что если ShowInEditForm = $false (т.е. поле скрыто) то что-то с ним делать дальше (на подобии поле.Hide = $false/$true) БЕСПОЛЕЗНО. Поле так и останется скрытым. 

    И если на чистоту, то я вообще в инете не видел примера где бы у кого то получилось изменить это поле. Примеров куча а толку мало.


    • Изменено VARD32 27 октября 2017 г. 7:09
    27 октября 2017 г. 7:06
  • Возможно он это сделал на уровне формы.

    А вы пробовали пересоздать форму редактирования через SharePoint Designer, как я писал выше? Сама операция простая до безобразия:

    Выбираем какого типа форму добавляем (просмотра, редактирования...), делаем её формой по-умолчанию.

    Во время создания формы система лезет в атрибуты и согласно их значений конструирует новую форму.

    Способы кастомизации форм

    Может у вас InfoPath форма :) или WebPart форма? Хотя ваш эксперимент с созданием собственного типа контента... Кстати в эксперименте вы же делали через FieldLinks (да я помню, что был доступен атрибут только для Формы просмотра), новые атрибуты появились, в том числе видимость на Форме редактирования. Может какой то базовый шаблон, используемый при создании форм он правил :) . Может на виртуалку поставить новы Sharepoint и с ним провести эксперимент?

    По добавлению форм в Designer есть немного 


    • Изменено agemlex77 27 октября 2017 г. 7:33 Дополнение
    27 октября 2017 г. 7:22
  • Никакая у меня не InfoPath форма. Всё из коробки.

    Я же сказал что создал новую библиотеку документов со своим ContentType с новыми полями. Я не использую какие-то шаблоны. Всё дефолтовое. 

    27 октября 2017 г. 8:13
  • Есть продвижения. Спросил совета на англоязычном форуме:

    На своей кастомной библиотеке для своего ContentType у меня получилось скрыть/показать поле при помощи "ShowInDisplayForm".

    $env:SPpath = "${env:CommonProgramFiles}\Microsoft Shared\web server extensions\16\"
    [System.Reflection.Assembly]::LoadFrom("$env:SPPath\ISAPI\Microsoft.SharePoint.dll")
    $web = Get-SPWeb http://portal/projects;
    $list = $web.GetList("http://portal/projects/Projects/Forms/AllProjects.aspx");
    
    $field = $list.Fields.GetFieldByInternalName("SapProjectId");
    $field.PushChangesToLists = $true;
    $field.ShowInEditForm = $true;
    $field.Update();
    Это работает!

    27 октября 2017 г. 10:00
  • Но не работает на нужной мне Библиотеке.

    Т.е. если меняем исходные данные:

    Библиотека другая.
    ContentType Другой
    Поле то же самое.

    27 октября 2017 г. 10:05
  • ....

    Если так, то следующая идея менять атрибуты видимости на уровне Списка (если получится, то значит не работает автоматическое копирование атрибутов от Типа контента к списку).

    ...


    Так я же писал про это тоже. Не стали пробовать? Ранее Fields вы меняли на уровне Типа контента, а в данном примере вы меняете на уровне Списка.
    27 октября 2017 г. 10:22
  • На мой взгляд, нужно пересоздавать поле, как я писал выше с копированием данных (Не корректно оно у вас село или кто то помог ему таким стать).
    27 октября 2017 г. 10:26
  • Попробовал сейчас с другим полем. Всё то же самое. Код отрабатывает, а поля на форме нет.((

    Может дело в типе контента а не в полях из которых оно состоит?

    27 октября 2017 г. 10:39
  • А это "другое" поле - это новое поле или из старых, которые уже были в типе контента? А если новое поле добавить в Тип контента, оно так же себя ведёт?
    27 октября 2017 г. 11:05
  • Ситуация такая:

    Я в новый ContentType добавляю новое поле "newSAPId" и туда же добавляю вторым, старое поле "SapProjectId". Применяю вот этот код:

    $web = Get-SPWeb http://portal/projects;
    $list = $web.GetList("http://portal/projects/SAPRecallLib/Forms/AllItems.aspx");
    $field = $list.Fields.GetFieldByInternalName("SapProjectId");
    
    $field.ShowInEditForm = $true;
    $field.Update();

    ..что для поля "newSAPId" что для "SapProjectId" всё отрабатывает нормально.

    Поля нормально скрываются и появляются, в зависимости от:  

    $field.ShowInEditForm = $true/$false;

    Но стоит мне на мою новую библиотеку документов прикрутить старый ContentType "Проект SAP" - начинаются сюрпризы.

    Никакое поле не меняет своего состояния при ТОМ ЖЕ КОДЕ.

    т.е. один и тот же код для разных ContentType-ов для одного и того же поля: SapProjectId. В случае с новым ContentType работает, а в случае старого - нет.

    Т.е. явно приложили ручки к старому ContentType-у и что-то там понастраивали. Только я понять не могу, что и где смотреть теперь мне?

    Т.е. отсутствует связь между полем списка и полем ContentType.


    27 октября 2017 г. 11:31
  • То есть проблема локализована и нужно найти силы создать новый тип контента, засунуть туда все  старые поля. Потом, скорее всего, значения останутся в старом типе контента, а новые поля будут дублировать старые(по два одинаковых поля в таблице), но будут пустыми и придётся перебрасывать значения.... Или создать новый список с новым контентом перебросить все значения и workflow и потом переименовать список, а старый удалить... Не забыть копию.
    • Изменено agemlex77 27 октября 2017 г. 12:34 дополнение
    27 октября 2017 г. 12:30
  • Мне не понятно другое. Что не так со старым типом контента? И где гарантии, что после проделанной работы по переносу в другой тип контента, проблема не повторится?

    Есть ли способ продиагностировать проблему? Ведь код выполняется абсолютно чисто, без ошибок! 

    27 октября 2017 г. 13:01
  • Конечно можно продиагностировать до совершения всех манипуляций, но частично работу сделать придётся.

    1.создать новый тип контента и наполнить его теми же полями.

    2.Добавить тип контента в таблицу и сделать его доступным для добавления.

    3.при добавлении новой записи в таблицу вручную проверить, чтобы был выбран новый тип контента.

    4.запустить код powershell для записи с новым контент типом и проверить форму для редактирования

    Убедившись, что всё работает, сделать скрипт для переноса.

    Тестовый sharepoint есть?

    Вспомнил, что так же сталкивался с подобными проблемами. Насколько я помню, сам был виноват в них. Не зная правильного пути создания кастомных списков, я многократно добавлял и удалял поля и типы контента, что приводило к похожим последствиям. В таких ситуациях лучше найти откуда идёт проблема и пересоздать узел. Это быстрее, чем искать причину.


    27 октября 2017 г. 13:38