Dynamics CRM 2011 Update Rollup 8 新機能 Xrm.Utility の紹介

みなさん、こんにちは。

今回も開発者向けの情報として、新機能である Xrm.Utility 機能を
紹介します。この機能は Update Rollup 8 で提供された機能です。

情報元 : New Xrm.Utility Functions in Update Rollup 8 for Microsoft Dynamics CRM 2011 and Microsoft Dynamics CRM Online

Microsoft Dynamics CRM 2011 用 Update Rollup 8 が5月にリリース
されましたが、そのタイミングでは SDK が提供されませんでした。
そのためクライアントサイドスクリプトの新機能をご存じでないお客様が
多いと思います。この機能を利用すれば、エンティティフォームや
Web リソースを開くことが可能です。

この機能が追加された背景には、Micrsoft Dynamics CRM オンライン
環境で windows.open を利用して子ウィンドウを開いた際に、認証情報を
再度入力する必要があったためです。問題の原因は、この関数で
ウィンドウを開いた場合には新規のプロセスとして起動することから、
認証情報を引き継げませんでした。

Update Rollup 8 では、この問題を回避する機能が提供されています。
以下のトピックは次期 SDK に含まれる内容です。

Xrm.Utility リファレンス

Xrm.Utility オブジェクトは、現在のページに依存しない便利な機能を
提供します。この機能はリボンコマンドやフォームなど、スクリプトを
サポートするすべてのページで利用可能です。HTML Web リソースに
ついては、ClientGlobalContext.js.aspx を含めることで利用が可能に
なります。

Xrm.Utility の機能

以下に Xrm.Utility オブジェクトの機能を紹介します。

openEntityForm 関数

エンティティのフォームを開きます。

構文 : Xrm.Utility.openEntityForm(name,id,parameters)

パラメーターの詳細

name
種類: String
必須項目
エンティティの論理名

id
種類: String
任意項目開きたいレコードの ID。指定されない場合は、新規作成フォームが開く

parameters
種類 : Object
任意項目
追加の情報を渡すためのディクショナリオブジェクト。
無効なパラメーターを渡すとエラーになる。

有効なパラメーターの例:
フォーム id: 複数のフォームが存在する場合、開きたいフォームの ID が指定可能.
既定フィールド id: 新規作成フォームの各フィールドに設定する既定値
カスタムクエリ文字列パラメーター: カスタムクエリ文字列を受け取るフォームに引数を渡すことが可能

戻り値: window オブジェクト

この機能を利用することで、URL を使用してフォーム、ビュー、およびダイアログを開く 
セクションで示される window.open メソッドを利用するより容易に開発が行える。
また新しく開いたウィンドウで認証を求められる問題がない。

サンプル

新しい取引先企業フォームを開く場合
Xrm.Utility.openEntityForm("account");

任意の取引先企業レコードを開く場合
Xrm.Utility.openEntityForm("account","A85C0252-DF8B-E111-997C-00155D8A8410");

新しい取引先企業フォームを、任意の設定で開く場合
var parameters = {};
parameters["formid"] = "b053a39a-041a-4356-acef-ddf00182762b";
parameters["name"] = "Test";
parameters["telephone1"] = "(425) 555-1234";
Xrm.Utility.openEntityForm("account", null, parameters);

新しい取引先担当者を開き、画面左上にサイズ指定をして開く場合
var newWindow = Xrm.Utility.openEntityForm("contact");
newWindow.moveTo(0,0);
newWindow.resizeTo(800,600);

openWebResource 関数

任意の HTML Web リソースを開きます。

構文 : Xrm.Utility.openWebResource(webResourceName,webResourceData,width, height)

パラメーターの詳細

webResourceName
種類: String
必須項目
HTML Web リソース名

webResourceData
種類 : String
任意項目
パラメータとして引き渡すデータ

width
種類 : Number
任意項目
開くウィンドウの幅

height
種類 : Number
任意項目
開くウィンドウの高さ

戻り値: window オブジェクト

HTML Web リソースはパラメータを受け取ることが可能です。詳細は
HTMLWeb リソースへのパラメーターの引き渡し を参照してください。

サンプル

“new_webResource.htm” HTML Web リソースを開く場合
Xrm.Utility.openWebResource("new_webResource.htm");

HTML Web リソースにデーターパラメーターを 1 つ渡して開く場合
Xrm.Utility.openWebResource("new_webResource.htm","dataItemValue");

HTML Web リソースにデーターパラメーターを複数渡して開く場合
var customParameters = encodeURIComponent("first=First Value&second=Second Value&third=Third Value");
Xrm.Utility.openWebResource("new_webResource.htm",customParameters);

引き渡された複数のパラメーターは HTML Web リソース側で処理する
必要があります。詳細は以下のリンクを参照してください。

サンプル: データ パラメーターを使用した Web リソースへの複数の値の引き渡し.

HTML Web リソースに URL でパラメーターを渡す場合
Xrm.Utility.openWebResource("new_webResource.htm?typename=account&userlcid=1033");

詳細は HTMLWeb リソースへのパラメーターの引き渡 を参照してください。.

HTML Web リソースをサイズ指定して開く場合
Xrm.Utility.openWebResource("new_webResource.htm", null, 300,300);

まとめ

これまでに windows.open を利用して開発して問題が出ている場合は、一度
こちらの機能をお試しください。

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