Share via


InfoPath フィールドから発行された列は、同じ InfoPath フォーム テンプレートが再発行されたときに再作成されます

元の KB 番号: 2554288

現象

次のような状況で問題が発生します。

  • Office InfoPath フォーム テンプレートを作成し、SharePoint のドキュメント ライブラリに発行します。 発行中に、ドキュメント ライブラリで列として発行する特定の InfoPath フィールドを選択します。 フォーム テンプレートを発行した後、同じ SharePoint サイト上の別のドキュメント ライブラリに同じフォーム テンプレートと同じフィールドを発行することにしました。

  • その後、InfoPath フォーム テンプレートに変更を実装し、最初の発行時と同じ順序でフォーム テンプレートを両方のドキュメント ライブラリに再発行します。

このシナリオでは、InfoPath フィールドから発行されたドキュメント ライブラリ内のすべての列が再作成されます。

この手順では、SharePoint ドキュメント ライブラリの再作成された列の内部名も更新されます。つまり、 0 から始まる数値は古い列名にサフィックスが付けられます。 たとえば、 LastName という名前の列が LastName0 に変更されます。

列の再作成は、次の 2 つの手順で行います。

  1. 列が SharePoint ライブラリに再び追加されます。
  2. InfoPath フィールドに関連付けられていない列は削除されます。

原因

InfoPath は、SharePoint ドキュメント ライブラリに発行されたフィールドの一覧を、これらのフィールドが関連付けられている列と共にローカル マニフェストに格納します。 これは、SharePoint の列 ID (一意の GUID 値) を InfoPath フィールドで参照することで実現されます。

更新された InfoPath フォーム テンプレートを 2 回目に SharePoint ドキュメント ライブラリに発行する場合、InfoPath は、関連付けられた ID を持つ列が既に存在するかどうかを確認します。 対応する列が見つからない場合は、ドキュメント ライブラリに新しい列が作成されます。 どの InfoPath フィールドにも関連付けられていない列はすべて、ドキュメント ライブラリから削除されます。

同じフォーム テンプレートを複数の SharePoint ライブラリに発行すると、次の操作がバックグラウンドで実行されます。

  • フォーム テンプレートを最初のライブラリに初めて発行すると、発行された各列が作成され、対応する InfoPath フィールドに関連付けられます。

  • フォーム テンプレートを 2 番目のライブラリに初めて発行すると、InfoPath は格納されている ID に関連付けられている列を見つけないため、新しい列が作成されます。 次に、新しい列 ID を対応する InfoPath フィールドに関連付けます。

  • フォーム テンプレートを 2 回目のライブラリに 2 回目に発行すると、2 番目のライブラリの GUID が現在フィールドに関連付けられているので、InfoPath は格納されている ID に関連付けられている列を見つけることができません。 そのため、InfoPath によって新しい列が作成され、新しい ID が取得され、InfoPath フィールドに関連付けられます。

  • このプロセスでは、どの InfoPath フィールドにも関連付けられていない列が多数作成され、ドキュメント ライブラリから削除されます。

  • この動作は、2 回目にフォーム テンプレートを 2 番目のライブラリに発行するときに繰り返されます。

注:

この問題は、InfoPath フォーム テンプレートがサイト コンテンツ タイプとして発行されている場合、または InfoPath フィールドが SharePoint でサイト列として発行されている場合は発生しません。

解決方法

これを回避するには、いくつかの方法があります。

  • SharePoint サイトに発行する InfoPath フィールドごとにサイト列を作成し、InfoPath フォーム テンプレートを両方のライブラリに発行するときに、事前に作成したサイト列を選択します。

    サイト列の ID は変更されないため、InfoPath は既存の列を再作成する必要はありません。

  • SharePoint ドキュメント ライブラリごとに 1 つずつ、InfoPath フォーム テンプレートの個別のコピーを作成します。 これにより、列 ID が変更されないため、InfoPath で既存の列が再作成されなくなります。

    この方法の欠点は、使用中のすべてのフォーム テンプレート コピーにすべての変更を実装する必要があることです。

注:

一般に、InfoPath フォーム テンプレートを 2 回発行するのではなく、サイト コンテンツ タイプとしてフォーム テンプレートを発行し、サイト コンテンツ タイプを両方の SharePoint ドキュメント ライブラリに関連付ける方法をお勧めします。

詳細

詳細については、「 SharePoint ライブラリの列またはサイト列を追加、削除、または変更する」を参照してください。