"検証データに一貫性がないため、検証がバックグラウンドで再開されました" というエラー
この記事は、同期保存イベントの制限によって Microsoft Dynamics 365 Field Service フォームでエラー メッセージが発生する問題を解決するのに役立ちます。
現象
フォーム上の特定のフィールドが変更されると、Dynamics 365 Field Service は AsyncJobTracker
パターンを使用して関連レコードを取得およびキャッシュします。 キャッシュされたレコードは、 OnSave
イベント中の検証に使用されます。 同期保存イベントの制限により、システムは非同期呼び出しを待機しません。 Dynamics 365 Field Service フォームには、次のエラー メッセージが表示されます。
検証データが一貫性がないため、バックグラウンドで検証が再開されました。 しばらくしてから、もう一度お試しください。
原因
Dynamics 365 Field Service には、関連エンティティからデータを取得する必要がある検証があります。 ただし、制限のため、すべての非同期呼び出しが完了するのを待機するために保存をブロックすることはできません。
AsyncJobTracker
パターンは、変更されたオフライン レコードが検証され、サーバーに同期できることを確認するために、オフライン モードでのみ有効になります。
キャッシュされたレコードが現在のルックアップ フィールドと一致しない場合は、エラー メッセージが表示されます。
解決方法
複数のシナリオでこの問題が発生する可能性があります。 解決策はシナリオによって異なります。
シナリオ 1: ユーザーはレコードにアクセスできません。 たとえば、エンティティがオフライン プロファイルに含まれていない場合、またはユーザーがレコードにアクセスするアクセス許可を持っていない場合です。
この問題を解決するには、エンティティがオフライン プロファイル フィルターに追加され、ユーザーにレコードにアクセスする権限を持つセキュリティ ロールが付与されていることを確認します。
シナリオ 2: カスタマイズでは、フィールドを更新するための JavaScript ロジックが導入されていますが、これらの更新では
OnChange
イベントはトリガーされません。この問題を解決するには、カスタム JavaScript を使用してルックアップ フィールドを更新するときに、 fireOnChange 属性を使用します。
必要に応じて、
setTimeout
関数を使用して呼び出しを遅らせ、検証が完了するまでの時間を許可します。シナリオ 3: モバイル アプリが既定でオフラインになっていないシナリオでは、ユーザーはオンライン モードでフォームを開く可能性があります。 その後、フォームがまだ開いている間はオフラインになります。 フォームがオンライン モードの場合、
AsyncJobTracker
は実行されないため、レコードはキャッシュされません。この問題を解決するには、オンラインでレコードを保存します。