検出されなかったオプションのグループに対する呼び出しが失敗する理由
グループ要素に対して オプション要素 ボックスを選択しないでください。 その理由は、グループ要素が オプション要素 としてマークされ、しかも検出されなかった場合 (その quality がヌル仮説の quality より低い場合、またはその要素に対してDontfind() 関数が呼び出された場合) 、そのサブ要素のいずれかを呼び出すとエラーが発生するためです。これは、ヌル仮説を持つグループではサブ要素の仮説が生成されないためです。
このエラーを回避するには、まずグループ要素を確認する必要があります。IsNull チェックが True を返した場合は、どのサブ要素にもアクセスしないでください。
オプションの グループ要素が役立つ場合
オプションの グループ要素とそのヌル仮説は、画像上に field グループ全体が存在せず、それらを検索しても意味がない場合に必要です。グループ要素に対してDontFind() メソッドを呼び出すことで、要素の検索を高速化できます。
ここで「呼び出す」とは、Advanced タブ内のいずれかのセクション、または Expression ウィンドウのブロック プロパティにコードを記述することを意味します。リレーション で検索条件を設定する際に グループ要素のプロパティを参照する場合は、
IsNull チェックが自動的に行われます。これは、Advanced タブで Code をクリックすると確認できます。GroupSample.fsp sample プロジェクト
これは、GroupSample.fsp sample プロジェクト (フォルダー %public%\ABBYY\FlexiCapture\12.0\Samples\FLS\Tips and Tricks\Optional Group) で示されています。
グループ要素 InvoiceRequisiteGroup の Properties ダイアログで、オプション要素 ボックスが選択されています。
Advanced タブの Advanced pre-search relations セクションには、次のコードがあります。
未定義の仮説エラーを再現して修正する
バッチ内の両方のページで FlexiLayout のマッチング手順を実行します。ページ 1 では手順は正常に完了しますが、FlexiLayout をページ 2 に適用すると、FlexiLayout Studio に次のエラーメッセージが表示されます。Dontfind() 関数によってグループ要素 InvoiceRequisiteGroup に対するヌル仮説が生成されました。その結果、コードは存在しない仮説を呼び出してしまいました。
正しいコードは次のようになります。
Advanced pre-search relations セクションのコードをコメントアウトし、リレーション セクションで TotalSumHeader 要素の類似する search constraint の横にあるチェックボックスをオンにした状態で、Advanced タブの Code をクリックすると、コンパイル済みコードにはすでに
IsNull チェックが含まれていることがわかります。