Microsoft-crm-jscript-web-resources

提供:Dev Guides
移動先:案内検索

JScript Webリソース

JScript Webリソースは、おそらくMicrosoft Dynamics CRMで使用する最も重要な種類のWebリソースです。

CRMでのJavaScriptのアプリケーション

フォームイベントプログラミング

フォームイベントプログラミングは、ユーザーがフォームを開いたとき、データを変更したとき、タブを移動したときなど、クライアント側の動作を処理するために使用されます。 このようなクライアント側の対話を実現するには、JavaScriptコードを記述し、CRMでJScript Webリソースとして追加します。 ただし、記述するJavaScriptコードは、標準のJavaScript DOMではなく、Dynamic CRMのXrm.Pageモデルを使用する必要があります。 Xrm.Pageモデルの使用は、このモデルを使用して作成したコードがCRMの将来のバージョンと互換性があることを保証するMicrosoftのコーディング方法です。

Webリソース

フォームイベントプログラミングで使用されることに加えて、JavaScriptは次のようなCRMの他のアプリケーションで使用されます-

  • 一意のURLでフォーム、ビュー、およびダイアログを開きます。
  • ODataおよびSOAPエンドポイントを使用して、Webサービスと対話します。
  • 他のWebリソース(HTML Webリソースなど)内のJavaScriptコードの参照。

このような場合、JavaScriptコードを(Xrm.Pageモデルを使用して)作成し、CRMのJScript Webリソースとして追加すると、一意のURIでどこからでも参照できます。

リボンのカスタマイズ

最後に、JavaScriptの他の一般的な使用法の1つは、次のようなリボンのカスタマイズを処理することです-

  • いくつかのロジックに基づいてリボンボタンを表示/非表示
  • 何らかのロジックに基づいてリボンボタンを有効/無効にする *特定のリボンボタンをクリックしたときの処理

このようなシナリオを処理するには、JavaScriptロジックを(Xrm.Pageモデルを使用して)作成し、JScript Webリソースとして追加します。 このWebリソースは、リボンボタンのXMLで参照でき、リボンボタンを表示/非表示にするか、有効/無効にするか、クリックイベントを処理するかを確認するために呼び出すJScriptファイルのメソッドを指定できます。

Xrm.Pageオブジェクトモデル

以下は、使用可能な名前空間、オブジェクト、およびそれらのコレクションを示すXrm.Pageオブジェクトの階層です。 これらのプロパティを使用して、JScriptコードを記述します。

XRMページオブジェクトモデル

ネームスペース

Sr.No Object & Description
1
  • Context*

組織の詳細、ログインしているユーザーの詳細、クエリ文字列でフォームに渡されたパラメーターなど、コンテキスト固有の情報を取得するメソッドを提供します。

2

Data

エンティティデータおよびメソッドへのアクセスを提供して、フォーム内およびビジネスプロセスフロー制御内のデータを管理します。

3

UI

フォームのいくつかのサブコンポーネントのコレクションに加えて、ユーザーインターフェイスに関する情報を取得するメソッドが含まれています。

オブジェクト

Sr.No Object & Description
1

Entity

メソッドを提供します-

  • レコード情報を取得する
  • 保存方法 *コレクション属性
2
  • Process*

ビジネスプロセスフローのプロパティを取得するメソッド。

3

Navigation

アイテムコレクションを使用してナビゲーションアイテムへのアクセスを提供します。

4

FormSelector

Itemsコレクションを使用して、ユーザーが利用可能なフォームにアクセスします。 また、ナビゲーションメソッドを使用して、フォームを閉じたり開いたりします。

5

Stages

各プロセスには、プロセスのgetStagesメソッドを使用してアクセスできるステージのコレクションがあります。

6

Steps

各ステージは、ステージのgetStepsメソッドを使用してアクセスできるさまざまなステップで構成されています。

コレクション

Sr.No Collections & Description
1

Attributes

フォームで利用可能なエンティティ属性へのアクセスを提供します。

2

Controls

  • ui.controls* -フォームに存在する各コントロールへのアクセスを提供します。 *attribute.controls* -属性内のすべてのコントロールへのアクセスを提供します。 *section.controls* -セクション内のすべてのコントロールへのアクセスを提供します。
3

Items

フォーム上のすべてのナビゲーション項目へのアクセスを提供します。

4

Tabs

フォーム上のすべてのタブへのアクセスを提供します。

5

Sections

フォーム上のすべてのセクションへのアクセスを提供します。

フォームプログラミングでサポートされるイベント

Xrm.Pageモデルを使用したフォームプログラミングでは、次のフォームイベントを処理することができます-

  • onLoad
  • onSave
  • onChange
  • TabStateChange
  • OnReadyStateComplete
  • 事前検索
  • ビジネスプロセスフロー制御イベント

フォームプログラミングの例

この例では、ユーザーが選択したPreferredMethodofCommunicationに基づいて、Contactフォームに検証を行います。 したがって、ユーザーが電子メールとして好みの方法を選択した場合、電子メールフィールドは必須になり、電話とファックスの他のフィールドでも同様になります。

ステップ1 *- *contacts.js という名前のJavaScriptファイルを作成し、次のコードをコピーします。

function validatePreferredMethodOfCommunication() {

  //get the value of Preffered Method of Communication code
   var prefferedContactMethodCode =
      Xrm.Page.getAttribute('preferredcontactmetho dcode').getValue();

  //if Preferred Method = Any, make all fields as non-mandatory

  //else if Preferred Method = Phone, make Mobile Phone field mandatory
  //and all other fields as non-mandatory

  //else if Preferred Method = Fax, make Fax field mandatory
  //and all other fields as non-mandatory

   if(prefferedContactMethodCode == 1) {
      clearAllMandatoryFields();
   }
   if(prefferedContactMethodCode == 2) {
      clearAllMandatoryFields();
      Xrm.Page.getAttribute('emailaddress1').setRequiredLevel('required');
   } else if(prefferedContactMethodCode == 3) {
      clearAllMandatoryFields();
      Xrm.Page.getAttribute('mobilephone').setRequiredLevel('required');
   } else if(prefferedContactMethodCode == 4) {
      clearAllMandatoryFields();
      Xrm.Page.getAttribute('fax').setRequiredLevel('required');
   }
}
function clearAllMandatoryFields() {

  //clear all mandatory fields
   Xrm.Page.getAttribute('emailaddress1').setRequiredLevel('none');
   Xrm.Page.getAttribute('mobilephone').setRequiredLevel('none');
   Xrm.Page.getAttribute('fax').setRequiredLevel('none');
}
  • ステップ2 *-[設定]→[カスタマイズ]→[システムのカスタマイズ]→[連絡先エンティティ]→[フォーム]→[メインフォーム]に移動して、連絡先エンティティフォームを開きます。
  • ステップ3 *-[フォームのプロパティ]をクリックします。

フォームプログラミングフォームのプロパティ

  • ステップ4 *-[フォームのプロパティ]ウィンドウで、[追加]をクリックします。

フォームプログラミングフォームライブラリの追加

  • ステップ5 *-新しいWebリソースを作成しているため、次の[Webリソースレコードの検索]ウィンドウで[新規]をクリックします。

フォームプログラミングフォームライブラリの新規追加

  • ステップ6 *-[新しいWebリソース]ウィンドウで、次の詳細を入力します-

名前-new_contacts.js

表示名-contacts.js

タイプ-JScript

ファイルのアップロード-ローカルマシンから作成したJavaScriptファイルをアップロードします。

フォームプログラミングWebリソースNew

  • ステップ7 *-[保存]、[公開]の順にクリックします。 この後、ウィンドウを閉じると、Look Up Web Resource Recordウィンドウに戻ります。
  • ステップ8 *-ここで、new_contacts.js Webリソースを確認できます。 それを選択して、「追加」をクリックします。 これで、新しいWebリソースが正常に追加され、フォームに登録されました。

フォームプログラミングWebリソースの追加

  • ステップ9 *-次に、優先通信方法フィールドの変更にイベントハンドラを追加します。 このイベントハンドラーは、作成したJavaScript関数を呼び出します。 [イベントハンドラー]セクションから次のオプションを選択します。
*Control* -優先される通信方法

イベント-OnChange

次に、次のスクリーンショットに示すように、[追加]ボタンをクリックします。

フォームプログラミング追加された新しいフォームライブラリ

  • ステップ10 *-ハンドラープロパティの次のウィンドウで、変更イベントが発生したときに呼び出すメソッドを指定します。

ライブラリをnew_contacts.jsとして、関数をvalidatePreferredMethodOfCommunicationとして選択します。 OKをクリックしてください。

フォームプログラミング追加ハンドラー

  • ステップ11 *-フォームライブラリ(Webリソース)とそれに登録されたイベントを表示できるようになります。 OKをクリックしてください。

フォームプログラミング追加ライブラリハンドラ

  • ステップ12 *-[保存]、[公開]の順にクリックします。

フォームプログラミングパブリッシュカスタマイズ

  • ステップ13 *-連絡先フォームを開き、優先する通信方法を電話に設定します。 これにより、[携帯電話]フィールドが必須になります。 携帯電話番号を入力せずにこの連絡先を保存しようとすると、「携帯電話に値を入力する必要があります」というエラーが表示されます。

フォームプログラミングの検証

結論

この章では、CRMのJavaScriptの3つの重要なアプリケーションを理解することから始めました。 後で、Xrm.Pageモデルを調査し、それを使用して、フォームプログラミングを例とともに学習しました。