原因不明の InfoPath フォーム破損

infopath で少々複雑な設計のフォームをデザインした居たところ、ハマりました。ボタンをクリックしたら、フィールドに値を挿入するように jscript で書いているのですが…これがど~しても上手く動いてくれません。

おかしい…そんな難しいことしてないのに。XPATH の記述ミスでないことは何度も確認しました。スクリプトにも間違いは無い筈です。なのに動かない。

散々悪戦苦闘した後、試しに、空白のフォームを新規作成して、全く同じスクリプトを書いてみたところ─
動いたよ!?

どうやら、何度もインフォパスのスキーマやコントロールを弄っていると、まれにフォームが破損して、正しく動作しなくなる場合があるようです。

VSTO みちしるべ ~道標 原因不明の InfoPath フォーム破損について

InfoPath のフォーム破損についてですが、稀にフォームの動きがおかしいときがあります。例えば以下のような症状がおきます。
・フォームが起動しない。
・不明なエラーが発生
・スクリプトで XML DOM で指定した XPATH を正しく認識しない。
原因としてはフォームの破損です。破損の原因としては、データソースから作成したようなテンプレートのデータソースを削除してフォームの再構築を複数回おこなった場合や同じテンプレートにコントロールの追加・削除を頻繁におこなった場合に XML のスキーマにごみが生じスキーマの不整合が発生するためです。コントロールの追加や削除などをおこなうと自動的にスキーマが生成されます。そのような作業を繰り返す内にフォームが破損することがあります。その際には非常に修復は難しく、再作成が必要になるケースが多いです。

> XPATH を正しく認識しない。
コレだよ…orz

ちなみに、これは偶然ですが、他のフォームライブラリで
> フォームが起動しない。
のエラーも発生していることを確認しました。

> 新しい空白のフォームを作成することができません。
> フォームを開くことができません。
> この問題を解決するには、システム管理者に問い合わせてください。

私←管理者(苦笑)

で、肝心の対処方法ですが、無いっぽいです。スキーマを全削除してから再インポートとか、色々試したのですが、全滅。結局、ゼロからフォームを再度設計しなおすことになりました─精神的にかなりダメージ(完成直前だった)

フォーム再作成の手順:
再作成の際のお手軽方法ですが、
1.破損しているフォームのデザインをまるごとコピーします。領域を選択して、新しい空白のフォームに貼り付けます。
これでコントロールや動作規則・条件付き書式を含むデザイン自体は再利用できます
2.次に元のデータソースを確認してスキーマを作成していきます。
3.データソースとコントロールのフィールドを一つずつマッピングしていきます。

これ、出来なくないですか?フォームのデザインを丸ごとコピペしましたが、動作規則や条件付き書式は全部消えてしまいました。

infopath2003 でも 2007 でも試しましたが駄目でした。これが出来ればすっごい楽なのに…。もし、出来る方法がありましたら、是非とも教えてください(T_T)

教訓としては、・設計途中途中で、フォームのバックアップを差分でとっておくこと。
・完成して発行したフォームも、テンプレートを別に保存しておくこと。

Infopath を運用する上で、かなり重要なポイントだと思います。


Author

中村 和彦(シンプレッソ・コンサルティング株式会社 代表)が「ユーザ視点の SharePoint 情報」を発信します。元大手製造業 SharePoint 運用担当。現SharePoint コンサルタント。お仕事のお問い合わせはこちらまでお願いします。当ブログにおける発信内容は個人に帰属し所属組織の公式発信/見解ではありません。
Twitter : @saruhiko
FB : 中村 和彦
MS MVP SharePoint 2009/10-2011/9
MS MVP Office 365 2012/10-

FaceBook Activity