電話用およびタブレット PC 用 Dynamics 365 のスクリプトの記述とデバッグ

 

公開日: 2017年1月

対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

電話用 Microsoft Dynamics 365 および タブレット PC 用 Microsoft Dynamics 365 は、Web アプリケーションで使用する同じフォーム定義を使用します。 Web アプリケーション内のフォーム イベント ハンドラーまたはリボン コマンドに追加する JavaScript は、Dynamics 365 モバイル クライアント (電話およびタブレット PC) 内で実行されることがあります。 これらにはいくつかの違いがあり、注意する必要があります。

このトピックの内容

一部の Xrm.Page 関数またはウィンドウ オブジェクト関数は、電話およびタブレット PC 用 Dynamics 365 では動作しません

電話用およびタブレット PC 用 Dynamics 365 で実行するコードの指定

電話用およびタブレット PC 用 Dynamics 365 に表示するコマンドの指定

Dynamics 365 モバイル クライアントとブラウザーの Web アプリケーションとの違いに注意

電話用およびタブレット PC 用 Dynamics 365 のデバッグ

一部の Xrm.Page 関数またはウィンドウ オブジェクト関数は、電話およびタブレット PC 用 Dynamics 365 では動作しません

Dynamics 365 モバイル クライアントでは、スクリプトの実行を阻止する可能性のある関数の使用は許されません。window.alertwindow.confirm、および window.prompt などの共通する JavaScript 関数は、期待通りには機能しませんし、エラーを発生します。

ユーザーにメッセージを表示するには、Xrm.UtilityalertDialog 関数と confirmDialog 関数を使用します。 これらの関数の動作はウィンドウ関数とは異なり、ユーザーが閉じるまでスクリプトの処理を停止しません。 これらの関数は、ユーザー入力への非同期応答を可能にするコールバック関数を提供します。window.confirmwindow.prompt、またはスクリプトの実行を阻止するその他のネイティブ ウィンドウ関数を使用すると、エラーがスローされます。

注意

フォーム スクリプト内で window.alert を使用すると、設定したメッセージが、コールバック関数を指定しなくても、Xrm.Utility.alertDialog を使用して自動的に表示されますが、これは一時的で、既に削除済みであるとみなされます。Xrm.Utility.alertDialog を代わりに使用するには、window.alert を使用してコードを移動する必要があります。

Dynamics 365 モバイル クライアントは、window.open メソッドもサポートしません。 新規または既存のレコードのエンティティ フォームを開く場合、Xrm.Utility.openEntityForm を代わりに使用します。

次のメソッドは、Dynamics 365 モバイル クライアント (電話およびタブレット PC) で動作しません。

Xrm.Page.context.getCurrentTheme

Xrm.Page.uiViewPort メソッド

Xrm.Page.data.entity.getDataXml

Xrm.Page.ui.navigation.items コレクション

Xrm.Page.ui.formSelector オブジェクト メソッド

Xrm.Page.ui tab.setDisplayState

これらの関数のほとんどは、空の関数を実行して、何も返しません。 これらの関数の 1 つからの戻り値を期待しているコードがある場合、その値は未確定です。

また、電話用 Dynamics 365 は Web リソースと IFRAME をサポートしないので、これらのコントロールのクライアント API は動作しません。 しかし、Web リソースと IFRAME のクライアント API は タブレット PC 用 Dynamics 365 でサポートされます。 詳細: Web リソースおよび IFRAME コントロール メソッド

電話用およびタブレット PC 用 Dynamics 365 で実行するコードの指定

クライアント API の機能が異なるときは、下記と同様のコードを組み込んで、各クライアントに適用するロジックを区別する必要があります。

var isCrmForMobile = (Xrm.Page.context.client.getClient() == "Mobile")
if (isCrmForMobile)
{
 // Code for CRM for phones and tablets only goes here.
}
else
{
 // Code for web browser or CRM for Outlook only goes here.
}
// Code for any client goes here.

電話用およびタブレット PC 用 Dynamics 365 に表示するコマンドの指定

ユーザー設定のコマンド バー (リボン) のコマンドで <JavaScriptFunction> (RibbonDiffXml) 操作を使用すると、Xrm.Page.context.client.getClient を使用してコードを区別することもできます。 実行するアクションが Dynamics 365 モバイル クライアントを使用して動作しない場合は、タブレット PC 用 Dynamics 365 にコマンドが表示されないようにする表示ルールを組み込む必要があります。 既定では、明示的に表示されないように構成しない限り、定義されたコマンドは Dynamics 365 モバイル クラインとに表示されます。 一般に、Dynamics 365 モバイル クライアントを使用して動作することを認識していない場合は、次の表示ルールを定義し、そのルールをすべてのコマンドに組み込む必要があります。

<DisplayRule Id="My.HideOnModern">
 <CommandClientTypeRule Type="Modern"
                        InvertResult="true" />
</DisplayRule>

Dynamics 365 モバイル クライアントとブラウザーの Web アプリケーションとの違いに注意

一部の Xrm.Page 関数またはウィンドウ オブジェクト関数は、電話およびタブレット PC 用 Dynamics 365 では動作しません に説明する関数以外に、違いがほかにもあることに留意してください。

  • 複合フィールド
    Dynamics 365 モバイル クライアントは複合フィールドを異なる方法で実装します。Dynamics 365 モバイル クライアントには複合属性が含まれていません。 これらは構成する属性の代わりに自動的に使用されて、それらの属性を代わりに表示します。詳細:複合の属性のスクリプトを記述する.

電話用およびタブレット PC 用 Dynamics 365 のデバッグ

電話用 Dynamics 365 または タブレット PC 用 Dynamics 365 はアプリケーションであるため、ブラウザーで使用できる標準の JavaScript デバッグ ツールは利用できません。 フォーム スクリプトおよびリボン コマンドのテストとデバッグには、次の手順をお勧めします。

  1. Web アプリケーションを使用してスクリプトを完全にテストします。

  2. Web ブラウザーを使用したテストの一部として、Xrm.Page.context.client.getClient を使用してクライアントを調べるときの基準を反転し、ユーザーが Dynamics 365 モバイル クライアントを使用するときに受け取るエクスペリエンスに対してロジックが適しているかを確認します。Dynamics 365 モバイル クライアントで使用できる API は Web ブラウザーで使用できる API のサブセットなので、代替のフローを Web ブラウザーでテストできるはずです。

  3. 可能な場合は、Windows 10 と Microsoft Visual Studio がインストールされているコンピューターに Dynamics 365 モバイル クライアントをインストールします。デバッガー ステートメントを、Visual Studio を使用してデバッガーを起動する場所に組み込みます。

  4. 最後に、Xrm.Utility.alertDialog を使用して、Dynamics 365 モバイル クライアント内のコードの値を表示します。

関連項目

Microsoft Dynamics 365 フォームのコードを記述する
フォームおよびフィールド イベントの使用
Xrm.Page オブジェクト モデルの使用
複合の属性のスクリプトを記述する
フォーム スクリプトの簡易参照
クライアント側のプログラミング リファレンス
バーまたはリボンの表示

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権