サービス活動の事前作成に登録されたプラグインがあります。プラグインでいくつかの条件を確認し、それらが満たされている場合はサービス アクティビティの作成を停止します。そのサービス活動の代わりに、代替となる 2 つの他の活動を作成したいと考えています。しかし、このすべてについてユーザーに通知したくありません。
CRM 2011 のプラグインで SA レコードの作成を停止する方法はありますか?
サービス活動の事前作成に登録されたプラグインがあります。プラグインでいくつかの条件を確認し、それらが満たされている場合はサービス アクティビティの作成を停止します。そのサービス活動の代わりに、代替となる 2 つの他の活動を作成したいと考えています。しかし、このすべてについてユーザーに通知したくありません。
CRM 2011 のプラグインで SA レコードの作成を停止する方法はありますか?
そのため、ユーザーが Dynamics CRM GUI を介してサービス活動の作成をトリガーすると、フォームは通常 (内部を送信することによってUpdateRequest
) 保存され、データベースへの別のトリップによって更新されます。プラグインを介して 2 つのイベントの間にレコードを削除した場合、ユーザーには標準の「レコードが見つかりません」というエラー メッセージが表示されます。この場合、レコードの作成を防止するプラグインで例外をスローすることは、ユーザーに通知されるという点で同等ですが、少なくとも、保存が機能しなかった理由を伝えるカスタマイズ可能なメッセージが表示されるでしょう。
プラグインを介してこれを処理する最良の方法は、
GUI を制御できる場合は、少し異なる方法で処理を行うことができます (たとえば、レコードの投稿操作を削除しますが、これにより不要なデータベース操作が 1 つ追加されます)。また、クライアント側の検証に常に JavaScript を使用できます。 .
もう 1 点: ユーザーの観点から、レコードを保存してもすぐに表示されないということは、CRM の予期しない動作になるということも付け加えておく必要があります。このようなことが起こった場合、少なくとも、CRM のそのセクションがどのように機能するかについて何らかのトレーニングを受けるか、根本的に異なることが実際に起こったという通知を受けることを期待します.
直接ではありません -たとえばTarget
から を削除すると、エラーがスローされます。InputParameters
プラグインを終了する通常の方法は例外をスローすることですが、もちろんユーザーにはこれが表示されます (さらに、それ以前に実装した他の論理をロールバックする可能性があります)。
私が見つけた最善の解決策は、(おそらく元のレコードで提供されたデータに基づいて) 必要なレコードを作成する同期前操作プラグインと、不要なレコードを削除する非同期後操作プラグインを使用することです。たとえば、ダイアログ プロセスまたはワークフローは、例外がスローされない場合にレコードが正常に作成されたと想定し、レコードが作成された直後に (それ以上の処理が必要ない場合でも) アクセスしようとするため、非同期である必要があります。
次のように、例外をスローすると停止できます。
throw new InvalidPluginExecutionException("Something is wrong!");
お役に立てれば。私があなたの質問に答えた場合は、回答を回答としてマークし、役に立ったと投票してください。