Compartilhar via


Dynamics CRM 2011 Xrm.Page スクリプト ライブラリ テンプレート

みなさん、こんにちは。

今日は JScript の開発をより効率的に進めることができるツールを紹介します。
このツールを使えば、Dynamics CRM 2011 用の JScript 開発で IntelliSense を
使えるほか、ローカルでテストを行うことも可能です。

Xrm.Page スクリプト ライブラリ テンプレートのインストール

Dynamics CRM 2011 SDK では、Visual Studio 2010 用にテンプレートを提供
しています。早速インストールしてみましょう。

1. Visual Studio 2010 がインストールされているコンピュータに SDK を
ダウンロードし、以下のパスを開きます。

sdk\templates\xrm.pagescriptprojecttemplate

2. C# を使う方は xrmpagescriptdevelopmentprojectcs.vsix を、VB.NET を
使う方は xrmpagescriptdevelopmentprojectvb.vsix を実行します。
テンプレート自体に違いはありませんが、新規プロジェクト作成時の表示場所
が変わります。

3. 上記ファイルを実行すると Visual Studio 2010 にインストールする旨が
表示されるので、インストールを完了します。

4. Visual Studio 2010 を起動して、新規プロジェクトの作成を選択します。

5. 以下のように Xrm.Page 用テンプレートが表示されていればインストール
完了です。※インストールした言語で確認してください。

image

IntelliSense サポート

プロジェクトを作って IntelliSense がどのように機能するかみてみましょう。

1. 上記画面より、新規プロジェクトを作成します。

2. プロジェクトを作成すると、既定で以下のようなファイルが作成されます。

image

3. Script フォルダ内に新規にスクリプトを作成するか、既存のものを利用する
ことが可能ですが、今回は My_Library.js を開きます。

4. 新しい関数を以下のように作成します。

function IntelliSenseTest()
{
}

5. 関数内で、X とタイプします。以下のように IntelliSense が機能します。

image

6. Xrm を選択して、「. (ドット)」 をタイプします。さらに候補が出ます。

image

上記のように Xrm.Page 空間に対しての Intellisense が機能します。

データコンテキスト

次にもう一歩進んだ使い方を紹介します。以下の手順で作業を
行ってください。

1. sdk\templates\xrm.pagescriptprojecttemplate フォルダにある
xrmpagescriptdevelopmentformsnapshot_1_0_0_0_managed.zip を
インポートします。

2. インポート完了後、JScript を実行したい対象のエンティティに
移動し、レコードを 1 つ開きます。今回は取引先担当者を選択しました。

3. カスタマイズタブをクリックすると、以下のようなボタンが表示されます。

image

4. Xrm.Page カスタムボタンをクリックします。

5. JScript を実行したいイベントを選択します。今回は OnLoad を
選択してみました。

image

6. Get Data ボタンをクリックします。データが表示されるので
中身を全てコピーします。

7. Visual Studio 2010 に戻り、ソリューション エクスプローラーより
PageData.js を開きます。

8. 中身を全て削除して、コピーしたものを貼り付け、保存します。

9. My_Library.js を開いて、以下のコードを記述します。

function IntelliSenseTest() {
    var nameobject = Xrm.Page.data.entity.attributes.get("lastname");
}

10. 次に nameobject と記述して、「. (ドット)」 をタイプします。以下のように
このコントロールが持っているメソッドやプロパティが表示されます。

image

11. 次に以下のように参照のフィールドを指定して同様の
手順を行います。出てくる情報が変化します。

image

上記のように、実際のデータコンテキストを利用すると、より
詳細な情報を扱えるようになります。

テストの実施

このテンプレートでは、ローカルである程度のテストをすることも
できるようになっています。

1. My_Library.js に以下の関数を作成します。

function HideNameControl() {
    var lastnamecontrol = Xrm.Page.ui.controls.get("lastname");
    lastnamecontrol.setVisible(false);
}

2. 次に TestPage.htm を開きます。

3. 以下のように自分のスクリプトを読み込みます。

<script src="Scripts/My_Library.js" type="text/javascript"></script>

4. onload 部分に作成した関数の実行および、結果の確認の
コードを記述します。

// 関数を呼ぶ
HideNameControl();
// 結果を取得する
var lastnamecontrol = Xrm.Page.ui.controls.get("lastname");
// 結果を画面に出す
writeMessage("visible for the lastname : " + lastnamecontrol.getVisible().toString());

5. デバッグを開始します。以下の画面が出ればテストは
成功です。

image

まとめ

こちらのテンプレートを利用することで、不要なタイピングミスやメソッド名の確認が
必要なくなり、開発効率が大幅にあがると 思います。しかし、いくつか制限もあるので
詳細は同梱の readme.docx をご参照ください。

- Dynamics CRM サポート 中村 憲一郎