2017-04-23 3 views
2

CRM 2016にプラグインC#があります。 プラグインが終了したらJavascriptコードを有効にしたいと思います。 このプラグインによってフィールドを更新しようとしましたが、このフィールドが変更されたときに、javaScriptコードで変更のイベントがトリガーされました。 フィールドが変更されますが、フィールドを変更するときに発生する機能はアクティブ化されません。 しかし、プラグインではなく手動でこのフィールドを変更すると、この関数は正常に機能します。プラグインがCRM 2016で終了する時期はどのように知ることができますか?

プラグインがいつ終了するのかを知る方法がありますか?

+0

プラグインがアップデートで起動していますが、それは間違いありませんか? さらに、javascriptのフォームの保存から更新が呼び出されていますか?答えのために –

答えて

1

フォームの保存からプラグインが呼び出されていて、同期登録されている場合は、保存して戻ったときにスクリプトを実行できます。 Xrm.Page.data.save().then(_success, fail); これは、同期を取り戻し、戻り値をトラップできない古いXrm.Page.data.entity.save(saveType)操作とは異なります。

保存するたびにこのプラグインを起動する必要がある場合は、OnSaveイベントをトラップしてデフォルトのアクションをキャンセルし、この非同期保存メソッドを使用します。ここでは、デフォルトの保存アクションを取り消す方法について説明するページがあります。https://neilparkhurst.com/2015/11/11/javascript-prevent-save/ 代わりにこの「再開可能な」保存操作を作成するために使用できます。 then()成功方法では、プラグインが変更された属性を取得し、fireOnChange()メソッドを呼び出すことができます。ここで

は、この新しい操作用XRMのドキュメントです: https://msdn.microsoft.com/en-us/library/dn481607.aspx?f=255&MSPPError=-2147217396

+1

ありがとう。 私は関数Xrm.Page.data.save()をアクティブにすることはできません。したがって、(_success、fail) 、コードプラグインによるフィールドの更新と保存はサーバー側であるためです。 とフォーム用の関数saveはクライアント側であるため、プラグインで保存しても機能しません。 – Racheli

+0

ああ、プラグインを起動しているのは何ですか?私はあなたがフォームを変更して保存して、プラグインを起動させると思っていました。プラグインが起動する原因は何ですか?私の2番目の答えは、それがあなたがコントロールするものであれば、より関連性があります。 –

1

それは異なる状況のためのソリューションですので、これは、別の答えです。あなたはこれと私の他の答えのどちらかをしますが、おそらく両方ではありません。私はそれらを一つの答えに入れて混乱させたくありませんでした。

この「プラグイン」が付随している場合は、たまにしか発生しないため、すべての保存時ではなく、アクションを使用するのがよいでしょう。アクションの前には、データ値を持たないエンティティのフィールドである「コントロールフィールド」がしばしばあります。保存するときに設定するだけで、プラグインが特別な動作をするようにします。これが状況であれば、コードをカスタムアクティビティ(ワークフローのカスタムコードを作成した場合と同じ)にリファクタリングして、保存時のプラグインではなくアクションを直接呼び出すことをおすすめします。その場合、アクションを呼び出して実行しているだけなので、「保存後にjavascriptを実行する」必要はありません。

0

サーバー側プラグインの実行が完了した後、クライアント側でいくつかのJavascript関数コードブロックを実行することはできません。

しかし、あなたのアプローチを拡張すると、プラグインのダミーフィールドを更新しているので、最新の変更を見るためにフォームをリフレッシュしてください。フォームのロード時に、そのダミーフィールドのonchange()メソッドがうまく動作するはずです。

+1

ダミーフィールドを使用してプラグインの動作を制御する必要はなく、2016年にその機能をリファクタリングして動作に直接振り分けることができます。 –

関連する問題