Идентификатор документа не устанавливается в типе содержимого при сохранении из клиента Office - PullRequest
2 голосов
/ 25 января 2012

У меня есть проблема, с которой я долго боролся.Эта проблема проявляется в тестовой среде, но не в моей среде разработки.

У меня есть шаблон библиотеки документов.В обработчике событий я присоединяю несколько типов контента (которые все наследуются от базового типа контента, который, в свою очередь, наследуется от Document).Базовый тип контента имеет пользовательский шаблон документа и обработчики событий, определенные в xmldocuments для определения типа контента.

На сайте включена функция Doc-ID.

При загрузке файла вбиблиотека документов, документ назначается идентификатор документа, как и ожидалось.При сохранении файла из Word, однако, Doc-ID является пустым.По-видимому, для элемента установлено значение, поскольку при последующем изменении типа содержимого элемента появляется идентификатор документа с номером, указывающим, что он был назначен при первом сохранении файла.При возврате типа содержимого к исходному значению идентификатор Doc-ID остается отображаемым в представлении.

Для пояснения: это не поле идентификатора типа содержимого элемента, а идентификатор Doc-ID, который создаетсяфункция doc-ID в SharePoint 2010.

Есть идеи, почему это значение не устанавливается при продвижении значений из Word?

1 Ответ

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

Похоже, решение лежало в базовом типе контента Document в семействе сайтов. Когда функция идентификатора документа активирована, обработчики событий добавляются в определение типа контента как xmldocuments. Когда создается обычная библиотека документов, тип содержимого в библиотеке наследуется от этого типа содержимого и, таким образом, получает копию получателей событий. Моя пользовательская библиотека документов с пользовательскими типами содержимого не наследовала от типа содержимого документа семейства сайтов, а скорее от базового типа содержимого документа (0x0101), и не получала копию получателей событий. Копирование xmldocuments в мой базовый тип контента, похоже, помогает.

<XmlDocuments>
        <XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/events">
          <spe:Receivers xmlns:spe="http://schemas.microsoft.com/sharepoint/events">
            <Receiver>
              <Name>Document ID Generator</Name>
              <Synchronization>Synchronous</Synchronization>
              <Type>10001</Type>
              <SequenceNumber>1000</SequenceNumber>
              <Assembly>Microsoft.Office.DocumentManagement, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly>
              <Class>Microsoft.Office.DocumentManagement.Internal.DocIdHandler</Class>
              <Data>
              </Data>
              <Filter>
              </Filter>
            </Receiver>
            <Receiver>
              <Name>Document ID Generator</Name>
              <Synchronization>Synchronous</Synchronization>
              <Type>10002</Type>
              <SequenceNumber>1001</SequenceNumber>
              <Assembly>Microsoft.Office.DocumentManagement, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly>
              <Class>Microsoft.Office.DocumentManagement.Internal.DocIdHandler</Class>
              <Data>
              </Data>
              <Filter>
              </Filter>
            </Receiver>
            <Receiver>
              <Name>Document ID Generator</Name>
              <Synchronization>Synchronous</Synchronization>
              <Type>10004</Type>
              <SequenceNumber>1002</SequenceNumber>
              <Assembly>Microsoft.Office.DocumentManagement, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly>
              <Class>Microsoft.Office.DocumentManagement.Internal.DocIdHandler</Class>
              <Data>
              </Data>
              <Filter>
              </Filter>
            </Receiver>
            <Receiver>
              <Name>Document ID Generator</Name>
              <Synchronization>Synchronous</Synchronization>
              <Type>10006</Type>
              <SequenceNumber>1003</SequenceNumber>
              <Assembly>Microsoft.Office.DocumentManagement, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly>
              <Class>Microsoft.Office.DocumentManagement.Internal.DocIdHandler</Class>
              <Data>
              </Data>
              <Filter>
              </Filter>
            </Receiver>
          </spe:Receivers>
        </XmlDocument>
      </XmlDocuments>
...