1

私は長い間苦労している問題があります。この問題はテスト環境では発生しますが、開発環境では発生しません。Officeクライアントから保存するときに、ドキュメントIDがcontenttypeに設定されていません

私はドキュメントライブラリテンプレートを持っています。イベントハンドラでは、いくつかのコンテンツタイプ(すべてがDocumentから継承する基本コンテンツタイプから継承されます)を添付します。基本コンテンツタイプには、カスタムドキュメントテンプレートと、コンテンツタイプ定義のxmldocumentsで定義されたイベントハンドラがあります。

Doc-ID機能はサイト内で有効になっています。

ファイルをドキュメントライブラリにアップロードするとき、ドキュメントには期待どおりにドキュメントIDが割り当てられます。 Wordからファイルを保存する場合、doc-IDは空白です。後でアイテムのコンテンツタイプを変更すると、ファイルが最初に保存されたときに割り当てられたことを示す番号がdoc-IDに表示されるため、値がアイテムに設定されているようです。コンテンツタイプを元の値に戻すと、Doc-IDはビューに表示されたままになります。

は明確にする:これは、アイテムのコンテンツタイプのIDフィールドではなく、SharePointの2010

この値が設定されていない理由を任意のアイデアでDOC-ID機能によって作成されたドキュメント-ID Wordから価値を宣伝するとき?

答えて

0

解決策は、サイトコレクションの基本的なドキュメントコンテンツタイプにあると思われます。 document-id機能が有効になると、コンテンツハンドラが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> 
+0

こんにちは、私は同様のシナリオがあります。PAGE-> ct1-> ct2->:私は、ページのctypeからinherrts 1つのctype CT1、CT2はCT1から継承し、 "CT3" はCT2から継承別の手段で別のctypeを持っていますct3。私はcksdevからxmlをインポートしました。上記のイベント受信者をすべてのctype、つまりct1、ct2、ct3に追加しました。私はすべての組み合わせを試してみました。しかし、すべての場合、私はdocidをct3を使用して作成されたページレイアウトから作成されたページのために生成しません.padelerに表示されたときにpagelayoutのdocidプロパティを参照することもできません(docid機能が有効です).. anry help..uはできます.. –

+0

この機能は実際には開発者向けではないようです。最善の方法は、各ライブラリのベースドキュメントctをベースとして、コードでランタイムにコンテンツタイプを作成することです。 –

関連する問題