Настройка даты создания и изменения элементов списка Sharepoint 2010 - PullRequest
3 голосов
/ 11 октября 2011

Я работаю над сценарием Powershell для переноса данных из существующей базы данных SQL Server в списки Sharepoint 2010.Некоторые записи в существующей базе данных имеют даты создания и изменения, которые клиент хотел бы перенести в Sharepoint.

Мой сценарий миграции использует метод UpdateListItems в веб-службе списков Sharepoint для загрузки пакетов CAML для созданияновые предметы.Я обновил свой CAML, чтобы установить столбец «Создано», однако значение, похоже, игнорируется и просто устанавливается на текущую дату.

Возможно ли установить эти даты вручную либо через веб-службы, либо черезМетод ProcessBatchData для объекта SPWeb?В Интернете я видел примеры, которые подразумевают, что это можно сделать для отдельных элементов, отключив обновление системы и изменив настройки версий.Однако работа с отдельными элементами невозможна, поскольку у нас есть около 800 000 элементов списка для импорта.

1 Ответ

1 голос
/ 12 октября 2011

Решением было перейти от использования веб-сервисов к использованию SPWeb.ProcessBatchData для импорта моих данных (спасибо Андреас).

XML, передаваемый в этот метод, выглядит следующим образом:

<ows:Batch OnError="Continue">
  <Method ID="1">
    <SetList />
    <SetVar Name="ID">New</SetVar>
    <SetVar Name="Cmd">Save</SetVar>
    <SetVar Name="urn:schemas-microsoft-com:office:office#ColumnName1">Value</SetVar>
    <SetVar Name="urn:schemas-microsoft-com:office:office#Modified">2009-09-03T15:05:00Z</SetVar>
    <SetVar Name="urn:schemas-microsoft-com:office:office#Created">2004-01-15T13:48:00Z</SetVar>
  </Method>
  <Method ID="2">
    ...
  </Method>
  ...
</ows:Batch>

Элемент "SetList" должен содержать Guid для списка, чтобы добавить данные тоже.В моем примере XML выше это пустой, потому что XML предварительно сгенерирован перед импортом данных в SharePoint, и мы не можем гарантировать, что Guid списка Sharepoint на целевом сервере будет таким же, поэтому мы заполняем это непосредственно перед импортом.

Я также должен был убедиться, что даты передаются в нужном формате, передав их в метод SPUtility.CreateISO8601DateTimeFromSystemDateTime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...