SharePoint вычисляет поле на основе другого скрытого поля - PullRequest
0 голосов
/ 15 декабря 2010

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

=CONCATENATE(IF(_MajorVersion="","0",_MajorVersion),".",IF(_MinorVersion="","0",_MinorVersion))

Пользователь непреднамеренно изменил формулу в представлении таблицы в списке, и теперь формула повреждена, как показано ниже

=CONCATENATE(IF(#NAME="","0",#NAME),".",IF(#NAME="","0",#NAME))

Если вы замените эту формулу на предварительно поврежденную версию, она не сохранится и выдаст следующую ошибку

The formula refers to a column that does not exist. Check the formula for spelling mistakes or change the non-existing column to an existing column. at Microsoft.SharePoint.Library.SPRequestInternalClass.UpdateField(String bstrUrl, String bstrListName, String bstrXML) at Microsoft.SharePoint.Library.SPRequest.UpdateField(String bstrUrl, String bstrListName, String bstrXML)

Столбцы _MajorVersion и _MinorVersion существуют, но они скрыты и определены следующим образом:

<Field SourceID="http://schemas.microsoft.com/sharepoint/3.0" ID="{GUID}" Name="_MajorVersion" StaticName="_MajorVersion" DisplayName="_MajorVersion" Group="ApplicationStuff" Type="Number" Required="FALSE" ReadOnly="FALSE" Sealed="FALSE" Hidden="TRUE" ShowInListSettings="FALSE" ShowInEditForm="FALSE" ShowInDisplayForm="FALSE" ShowInNewForm="FALSE" />

Я знаю, что можно развернуть функцию, которая сделает эти столбцы видимыми, исправит проблему, а затем снова их скроет. Тем не менее, есть много волокиты, чтобы это произошло. Кто-нибудь знает способ сделать это без развертывания кода? Я также подумал о воссоздании списка, но в этом списке тысячи SPListItems.

Любые предложения будут оценены!

1 Ответ

1 голос
/ 16 декабря 2010

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

...