フォーム スクリプトの簡易参照

 

公開日: 2017年1月

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

このトピックは、それらで実行するタスクに基づきよく使用されるフォーム スクリプトのクイック リファレンスを示します。 完全なリファレンスについては、「クライアント側のプログラミング リファレンス」を参照してください。 このページのすべての例では、既定のすべてのアカウント エンティティのメイン フォームを使用しますが、他に指定がある場合は除きます。

このトピックの内容

属性

  • 属性へのアクセス

  • エンティティ属性データを取得または設定します。

  • 属性メタデータの取得

イベント引数の保存

通知の表示

コントロール

  • フォーム コントロールへのアクセス

  • ヘッダー コントロールへのアクセス

  • 業務プロセス フローのコントロールへのアクセス

  • フォーム コントロールのメソッド

  • OptionSet コントロール メソッド

  • IFRAME および Web リソースのコントロールのメソッド

  • 検索コントロールのメソッド

  • サブグリッド コントロールのメソッド

  • 日付コントロールのメソッド

フォームのナビゲーション

タブおよびセクション

実行時のイベント ハンドラーの追加または削除

コンテキスト情報のメソッド

エンティティ データの取得、更新、保存

属性

属性は、レコードで使用可能なデータを格納します。

属性へのアクセス

属性は Xrm.Page.data.entity.attributes のコレクションから使用できます。 属性にアクセスするには Xrm.Page.data.entity.attributes.9b85e46f-ca6e-4313-af04-4290e3c6ab8b#BKMK_get メソッドまたはショートカット バージョンXrm.Page.getAttributeを使用できます。get 方法では 4 種類の引数を使用できます:

  • 文字列: 属性の名前が文字列に一致する属性オブジェクトを返します。

  • 番号:Xrm.Page.data.entity.attributes コレクションのインデックスが数字に一致する属性オブジェクトを返します。

  • なし:すべての属性の配列を返します。

  • Delegate function(attribute,index):Xrm.Page.data.entity.attributes のコレクションの中で、デリゲート関数が trueを返すすべての属性の配列を返します。

タスク

名前による属性へのアクセス

var nameAttribute = Xrm.Page.getAttribute("name");

nameAttribute 変数への[アカウント名] フィールドの属性の割り当て

インデックスによる属性へのアクセス

var firstAttribute = Xrm.Page.getAttribute(0);

firstAttribute 変数に Xrm.Page.data.entity.attributes コレクションの最初の属性を割り当てます。

すべての属性へのアクセス

var allAttributes = Xrm.Page.getAttribute();

allAttributes 変数に Xrm.Page.data.entity.attributes コレクションのすべての属性の配列を割り当てます。

特定の条件を満たすすべての属性へのアクセス

var optionsetAttributes = Xrm.Page.getAttribute(function (attribute, index) {
return attribute.getAttributeType() == "optionset";
});

属性の種類が "optionset "のときに、true を返す、匿名関数に設定した条件を満たす Xrm.Page.data.entity.attributes のコレクションのすべてのプロパティの配列を、optionsetAttributes変数に割り当てます。

Xrm.Page.data.entity.attributes のコレクションにはさらに、関数内の属性にアクセスするときに使用できる 9b85e46f-ca6e-4313-af04-4290e3c6ab8b#BKMK_forEach 方法があります。 次の writeRequiredAttributesToConsole 関数によって、デバッグ コンソールにデータを必要とするすべての属性名が作成されます:

function writeRequiredAttributesToConsole() {
 var requiredAttributeNames = [];

 Xrm.Page.data.entity.attributes.forEach(
 function (attribute, index) {
  if (attribute.getRequiredLevel() == "required")
  { requiredAttributeNames.push(attribute.getName()); }
 });

 if (requiredAttributeNames.length > 0) {
  if (typeof console != "undefined") {
   console.log(requiredAttributeNames.join());
  }
 }
 else {
  if (typeof console != "undefined") {
   console.log("No required attributes detected");
  }
 }
}

このトピックの内容

エンティティ属性データを取得または設定します。

次の表の例は、属性に保存されているデータを取得または変更する方法を示します。

タスク

方法

属性の値の取得

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_getValue

var nameValue = Xrm.Page.getAttribute("name").getValue();

nameValue 変数に[アカウント名] フィールドの値を割り当てます。

属性の値の設定

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_setValue

Xrm.Page.getAttribute("name").setValue("new name");

"新しい名前"に[アカウント名] フィールドの値を設定します。

optionset 属性の現在選択オプションのテキスト値の取得

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_getText

var addressType = Xrm.Page.getAttribute("address1_addresstypecode").getText();

addressType 変数に[住所の種類] フィールドで選択されたオプションのテキストを割り当てます。

optionset属性の現在選択のオプション オブジェクトを取得する

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_getSelectedOption

var addressTypeOption = Xrm.Page.getAttribute("address1_addresstypecode").getSelectedOption();

addressTypeOption 変数に[住所の種類] フィールドで選択されたオプションを割り当てます。

このトピックの内容

属性メタデータの取得

次の表の例では、どのような属性かを理解したり、属性の動作をする方法を変更する方法について属性のプロパティにクエリを送る方法を示しています。

タスク

方法

属性の種類の取得

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_getAttributeType

var attributeType = Xrm.Page.getAttribute(0).getAttributeType();

attributeType 変数に、最初の属性の種類を表す文字列値を割り当てます。

属性のフォーマット方法の取得

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_getFormat

var attributeFormat = Xrm.Page.getAttribute(0).getFormat();

attributeFormat 変数に、最初の属性の形式を表す文字列値を割り当てます。

Booleanまたは optionset属性の初期値の取得

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_getInitialValue

var attributeInitialValue = Xrm.Page.getAttribute("address1_addresstypecode").getInitialValue();

attributeInitialValue 変数に[住所の種類] フィールドの初期番号値を割り当てます。

属性値が変更されているかどうかの判定

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_getIsDirty

var isNameChanged = Xrm.Page.getAttribute("name").getIsDirty();

isNameChanged 変数に、[アカウント名] フィールドの値が変更されたかどうかを示す Boolean 値を割り当てます。

検索属性が関係者リスト検索を表すかどうかを指定します。

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_getIsPartyList

var isPartyList = Xrm.Page.getAttribute("to").getIsPartyList();

[電子メール] エンティティの [宛先] フィールドが関係者リストの検索を表すかどうかを示す Boolean 値を割り当てます。

このメソッドは、41462684-3e5d-4858-8be4-1a7c4fcdeff6#BKMK_UpdatedEntties でのみ使用できます。

数を格納する属性で許容される最大値の取得

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_getMax

var newValue = 100000000000001;
var newValueBelowMax = (newValue < Xrm.Page.getAttribute("creditlimit").getMax())

newValue 変数の値が [与信限度額] フィールドで許可される最大値を超過するかどうかを示す Boolean 値を、newValueBelowMax 変数に割り当てます。

文字列を格納する属性で許容される最大長の取得

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_getMaxLength

var newAccountName = "A Store";
var nameTooLong = (newAccountName.length > Xrm.Page.getAttribute("name").getMaxLength())

newAccountName 変数の値が [取引先企業名] フィールドで許可される最大長を超過するかどうかを示す Boolean 値を、nameTooLong 変数に割り当てます。

数を格納する属性で許容される最小値の取得

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_getMin

var newValue = -1;
var newValueBelowMin = (newValue < Xrm.Page.getAttribute("creditlimit").getMin())

newValue 変数の値が [与信限度額] フィールドで許可される最小値を下回るかどうかを示す Boolean 値を、newValueBelowMin 変数に割り当てます。

属性の論理名の取得

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_getName

var attributeName = Xrm.Page.getAttribute(0).getName();

attributeName 変数へのページの最初の属性の論理名の値を割り当て

値を示すオプション オブジェクトの取得

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_getOption

var addressTypeOption = Xrm.Page.getAttribute("address1_addresstypecode").getOption(1);
alert(addressTypeOption.text); //displays 'Bill To'

1という値の [住所の種類] フィールド オプションのテキストを表示する警告が表示されます。

数値の属性に精度のレベルを表す数値の取得

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_getPrecision

var creditLimitPrecision = Xrm.Page.getAttribute("creditlimit").getPrecision();

creditLimitPrecision 変数に[利用限度額] フィールドの精度値を割り当てます。

値を持つために属性が必須かどうを表す文字列値の取得

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_getRequiredLevel

var creditLimitRequired = Xrm.Page.getAttribute("creditlimit").getRequiredLevel();

creditLimitRequired の変数値は nonerequired、または recommendedとすることができます。

レコードを保存するためにデータがフィールドで必要かどうかの変更

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_setRequiredLevel

Xrm.Page.getAttribute("creditlimit").setRequiredLevel("required");

[与信限度額] フィールドを必須にします。

レコードを保存する際に属性のデータが送信されるかどうかの判定

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_getSubmitMode

var nameSubmitMode = Xrm.Page.getAttribute("name").getSubmitMode();

nameSubmitMode の変数値は alwaysnever、または dirty のいずれかで、[アカウント名]フィールドの submitMode を表します。

レコードを保存する際に属性のデータが保存されるかどうかのコントロール

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_setSubmitMode

Xrm.Page.getAttribute("name").setSubmitMode("always");

例では、変更されていない場合でも、[アカウント名] フィールド値が常に強制的に保存されます。

フィールド レベルのセキュリティを属性に適用した場合、
ユーザーには属性で読み取り、または更新操作を実行する特権
があるかどうかを確認します。 詳細については、「
Microsoft Dynamics 365 で、フィールド セキュリティを使用してフィールド値へのアクセスを制御する方法」を参照してください

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_getUserPrivilege

var canUpdateNameAttribute = Xrm.Page.getAttribute("name").getUserPrivilege().canUpdate;

canUpdateNameAttribute 変数に [アカウント名] フィールドを更新するユーザーの特権を表す Boolean 値を割り当てます。

このトピックの内容

イベント引数の保存

ビジネス ロジックを実装する際、レコードが、ユーザーが必要な情報を含めることができるように、保存されるのを避けることは、頻繁に必要です。 このため、イベント ハンドラーを構成して、実行コンテキストに渡すようにする必要があります。 実行コンテキストには、イベントの引数を取得するための getEventArgs メソッドが含まれます。 これらの引数には、レコードが、save イベントについて通知するプロパティを保存するか、またはクエリするかをコントロールするために使用できるメソッドが含まれます。

タスク

レコードが保存されるのを防ぎます。

function My_PreventSaveFunction(eContext) {
 eContext.getEventArgs().preventDefault();
}

実行コンテキストを取得して、イベントの引数に含まれる preventDefault 方法を使用するには eContext パラメーターを使用します。

どのアクションが保存を開始するかを決定します。

function My_GetSaveModeTextFunction(eContext) {
 var saveModeCode = eContext.getEventArgs().getSaveMode();
 var saveModeText = "Unknown";
 switch (saveModeCode) {
  case 1:
   saveModeText = "Save";
   break;
  case 2:
   saveModeText = "SaveAndClose";
   break;
  case 5:
   saveModeText = "Deactivate";
   break;
  case 6:
   saveModeText = "Reactivate";
   break;
  case 7:
   saveModeText = "Send";
   break;
  case 15:
   saveModeText = "Disqualify";
   break;
  case 16:
   saveModeText = "Qualify";
   break;
  case 47:
   saveModeText = "Assign";
   break;
  case 58:
   saveModeText = "SaveAsCompleted";
   break;
  case 59:
   saveModeText = "SaveAndNew";
   break;
  case 70:
   saveModeText = "AutoSave";
   break;
 }
 return saveModeText;
}

実行コンテキストを取得して、整数コード値をテキストに変換するために、イベントの引数に含まれる getSaveMode 方法を使用するには eContext パラメーターを使用します。

このトピックの内容

通知の表示

通知はメッセージをユーザーに表示する方法を提供します。

タスク

方法

データが無効であることを示すメッセージをコントロールの近くに表示。

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_setnotification

Xrm.Page.getAttribute("name").controls.forEach(
function (control, i) {
control.setNotification("'Test' is not a valid name.");
})

[アカウント名] 属性のフォームのすべてのコントロールに対して検証エラー メッセージを設定します。

このメッセージが表示されているかぎり、レコードは保存できません。

このメソッドは、41462684-3e5d-4858-8be4-1a7c4fcdeff6#BKMK_UpdatedEntties でのみ使用できます。

コントロールに対して既に表示されているメッセージを削除。

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_clearnotification

Xrm.Page.getAttribute("name").controls.forEach(
function (control, i) {
control.clearNotification();
})

[アカウント名] 属性のフォームのすべてのコントロールに対する検証エラー メッセージをすべて除去します。

このメソッドは、41462684-3e5d-4858-8be4-1a7c4fcdeff6#BKMK_UpdatedEntties でのみ使用できます。

フォーム レベルの通知の表示。

0375b206-d2bf-4034-a41d-fb476ecb4438#BKMK_setFormNotification

Xrm.Page.ui.setFormNotification(
"Hello",
"INFO",
"helloMsg"
);

フォームの最上部にシステム情報アイコンとともにメッセージ "Hello" を表示します。

このメソッドは、41462684-3e5d-4858-8be4-1a7c4fcdeff6#BKMK_UpdatedEntties でのみ使用できます。

フォーム レベルの通知の削除。

0375b206-d2bf-4034-a41d-fb476ecb4438#BKMK_clearFormNotification

Xrm.Page.ui.clearFormNotification("helloMsg");

helloMsgを uniqueid パラメーターとして使用して、前に設定されたメッセージを消去します。

このメソッドは、41462684-3e5d-4858-8be4-1a7c4fcdeff6#BKMK_UpdatedEntties でのみ使用できます。

コールバック関数を使用してブロッキング不可の警告ダイアログを表示。

72a66f93-92df-42b9-a8fd-b6125c7fe83b#BKMK_alertDialog

var alertDisplayed = false;
Xrm.Utility.alertDialog(
"Showing Alert",
function () { alertDisplayed = true; }
)

クローズ時に、警告を表示し、alertDisplayed 変数の値を設定します。

このメソッドは、41462684-3e5d-4858-8be4-1a7c4fcdeff6#BKMK_UpdatedEntties でのみ使用できます。

ユーザーがクリックしたボタンに基づく異なるコールバックでブロック不可確認ダイアログを表示。

72a66f93-92df-42b9-a8fd-b6125c7fe83b#BKMK_confirmDialog

var agree = false;
Xrm.Utility.confirmDialog(
"Do you agree?",
function () { agree = true;},
function () { agree = false; }
);

確認メッセージを表示し、応答に基づいて、agree 変数の値を設定します。

このメソッドは、41462684-3e5d-4858-8be4-1a7c4fcdeff6#BKMK_UpdatedEntties でのみ使用できます。

このトピックの内容

コントロール

コントロールは、フォームのユーザー インターフェイス要素を表します。 フォームの各属性には関連付けられた少なくとも 1 つのコントロールがあります。 必ずしもすべてのコントロールが属性に関連付けられているとは限りません。IFRAME、web リソース、サブグリッドは属性がないコントロールです。

フォーム コントロールへのアクセス

コントロールは Xrm.Page.ui.controls のコレクションから使用できます。 コントロールにアクセスするには Xrm.Page.ui.controls.9b85e46f-ca6e-4313-af04-4290e3c6ab8b#BKMK_get メソッドまたはショートカット バージョンXrm.Page.getControlを使用できます。

get方法では 4 種類の引数を使用できます:

  • 文字列: 論理名が文字列に一致するコントロールを返します。

  • 番号:Xrm.Page.ui.controls コレクションのインデックスが数字に一致するコントロールを返します。

  • なし:すべてのコントロールの配列を返します。

  • Delegate function(control,index):Xrm.Page.ui.controls のコレクションの中で、デリゲート関数がtrueを返すすべてのコントロールの配列を返します。

タスク

特定の属性に対するすべてのコントロールにアクセスする

var nameControls = Xrm.Page.getAttribute("name").controls.get();

nameControls 変数に name 属性のすべてのコントロールの配列を割り当てます。

コントロールに名前でアクセスする

var nameControl = Xrm.Page.getControl("name");

nameControl 変数に[アカウント名] フィールドを表す最初のコントロールを割り当てます。

属性に対するフォームに追加される最初のコントロールには属性と同じ名前があります。 そのほかの各コントロール名には、名前に追加されたインデックス番号があります。 たとえば、名前属性の 3 つのコントロールには、それぞれ、namename1、および name2という名前があります。

コントロールにインデックスでアクセスする

var firstControl = Xrm.Page.getControl(0);

firstControl 変数に Xrm.Page.ui.controls コレクションの最初のコントロールを割り当てます。

すべてのコントロールにアクセスする

var allControls = Xrm.Page.getControl();

allControls 変数に Xrm.Page.ui.controls コレクションのすべてのコントロールの配列を割り当てます。

特定の条件を満たすすべてのコントロールへのアクセス

var optionsetControls = Xrm.Page.getControl(function (control, index) {
return control.getControlType() == "optionset";
});

属性の種類が "optionset "のときに、trueを返す、匿名関数に設定した条件を満たす Xrm.Page.ui.controls のコレクションのすべての属性の配列を、optionsetControls変数に割り当てます。

各セクションには、このセクションにちょうどコントロールを含むコントロールのコレクションがあります。 次のコード サンプルは [一般] タブの [アドレス] セクションで見つかるコントロールの配列に generalTabAccountInfoSectionControls の変数に割り当てます。
var generalTabAccountInfoSectionControls = Xrm.Page.ui.tabs.get("general").sections.get("address").controls.get();

注意

各属性はフォーム内に一度だけ存在しますが、フィールドはその属性のフォームに複数回追加できます。 追加する各フィールドは別のコントロールを作成します。 スクリプトの作成後、フォームをさらにカスタマイズできます。 属性コントロールに対して作成するスクリプトは、フォームに複数回含まれていることを前提とする必要があります。 属性のコントロールに対して取るアクションは、通常、その属性のすべてのコントロールに適用する必要があります。 たとえば、コントロールを無効にするとき、コントロールの 1 つだけを無効にする場合は、別のコントロールを使用してさらにデータを入力する場合があります。 この理由から、スクリプトの作成時に 1 つのコントロールだけが存在する場合でも、コレクションの 9b85e46f-ca6e-4313-af04-4290e3c6ab8b#BKMK_forEach メソッドを使用して次のパターンを使用することを推奨します。

Xrm.Page.getAttribute("name").controls.forEach(function (control, index) { control.setDisabled(true); });

このトピックの内容

ヘッダー コントロールへのアクセス

ヘッダーのコントロールは、コントロール名の前に "header_" が追加される命名規則に従います。 たとえば、name 属性がヘッダーにある場合は、
var nameControlInHeader = Xrm.Page.getControl("header_name"); を使用してアクセスできます。

業務プロセス フローのコントロールへのアクセス

業務プロセス フローのコントロールは、コントロール名の前に "header_process_" が追加される命名規則に従います。 たとえば、name 属性がヘッダーにある場合は、
var nameControlInBPF = Xrm.Page.getControl("header_process_name"); を使用してアクセスできます。

注意

フォームが読み込まれると、アクティブ ステージのコントロールのみが Xrm.Page.ui.controls コレクションに含まれます。 他の業務プロセス フローのコントロールは、現在のエンティティのステージが選択されると追加されます。

フォーム コントロールのメソッド

コントロールへのアクセスを入手したら、次のメソッドを呼び出すことができます。

タスク

方法

コントロールを表示するかどうかを判断する

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_getVisible

var isNameVisible = Xrm.Page.getControl("name").getVisible();

[アカウント名]フィールドが表示されるかどうかを表す isNameVisible変数に、Boolean値を割り当てます。

コントロールの表示または非表示

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_setVisible

Xrm.Page.getControl("name").setVisible(false);

[アカウント名] フィールドが表示されません。

コントロールの属性への参照を取得する

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_getAttribute

var nameAttribute = Xrm.Page.getControl("name").getAttribute();

nameAttribute 変数に[アカウント名] フィールドのコントロールの属性を割り当てます。

注意

必ずしもすべてのコントロールに属性はあるわけではありません。

コントロールの種類を決定する

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_getControlType

var optionSetControls = Xrm.Page.getControl(function (control, index) { return control.getControlType() == "optionset"; });

optionSetControls 変数に、optionset コントロールの配列を割り当てます。

コントロールを有効かどうかを判断する

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_getDisabled

var disabledControls = Xrm.Page.getControl(function(control, index) { return control.getDisabled(); });

disabledControls 変数に、無効なコントロールの配列を割り当てます。

注意

Web リソース、およびサブグリッド コントロールは、このメソッドをサポートしません。

コントロールの無効化または有効化

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_setDisabled

Xrm.Page.getAttribute("name").controls.forEach(function (control, index) { control.setDisabled(true); });

name 属性の各コントロールを無効にします。

ヒント

どの属性にも複数のコントロールがある可能性があることに留意してください。

コントロールのラベルを取得する

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_getLabel

var nameControlLabel = Xrm.Page.getControl("name").getLabel();

nameControlLabel 変数に[アカウント名] フィールドのコントロールの値を割り当てます。

コントロールのラベルを変更する

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_setLabel

Xrm.Page.getControl("name").setLabel("Company Name");

[会社名][アカウント名] フィールドのラベルを変更します。

コントロールの名前の取得

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_getName

var firstControlName = Xrm.Page.getControl(0).getName();

firstControlName 変数に Xrm.Page.ui.controls コレクションの最初のコントロールの名前を割り当てます。

コントロールの親の取得

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_getParent

var parentSection = Xrm.Page.getControl("name").getParent();

parentSection 変数に[アカウント名] フィールドのコントロールの親セクションを割り当てます。

コントロールにフォーカスを設定する

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_setFocus

Xrm.Page.getControl("name").setFocus();

[アカウント名] フィールドにフォーカスを設定します。

このトピックの内容

OptionSet コントロール メソッド

Optionsets にはいくつかの特別な方法があります。 属性がoptionsetの有効なオプションを定義することを理解することが重要です。optionsetコントロールを操作する場合、使用できるオプションを操作できますが、新しいオプションを作成することはできません。

タスク

方法

optionset コントロールにオプションを追加する

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_addOption

var addressTypeCodeControl = Xrm.Page.getControl("address1_addresstypecode");
var billToAddressOption = addressTypeCodeControl.getAttribute().getOption(1);
addressTypeCodeControl.clearOptions();
addressTypeCodeControl.addOption(billToAddressOption);

[住所の種類]フィールドのコントロールへの参照を使用して、コントロールの属性にアクセスし、6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_getOption 方法を使用して、billToAddressOption 変数を [請求書送付先] オプションを示すオプションに設定します。

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_clearOptionsを使用して、既存のあらゆるオプションを削除し、addOptionを使用して、このコントロールに使用できる唯一のオプションとしてbillToAddressOption を設定します。

optionset コントロールからすべてのオプションを削除する

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_clearOptions

Xrm.Page.getControl("address1_addresstypecode").clearOptions();

[住所の種類] フィールドのコントロールからすべてのオプションを削除します。

optionset コントロールから単一のオプションを削除します。

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_removeOption

Xrm.Page.getControl("address1_addresstypecode").removeOption(1);

[住所の種類] フィールドのコントロールから請求先オプションを削除します。

このトピックの内容

IFRAME および Web リソースのコントロールのメソッド

IFRAME コントロールは、URLを提供することによって、フォーム内にページを含めることができます。 フォームに追加された HTML Web リソースは、IFRAME 要素を使用して提供されます。Silverlight および画像の Web リソースは、ページ内に直接埋め込まれます。

タスク

方法

Silverlight web リソースに渡すデータ クエリ文字列パラメーターの値を取得します。

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_getData

var dataValue = Xrm.Page.getControl("WebResource_SilverLightControl").getData();

データ クエリ文字列パラメーターによって渡された値を dataValue 変数に割り当てます。

現在IFRAMEに表示されるコンテンツの URL を取得します。

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_getSrc

var iframeSource = Xrm.Page.getControl("IFRAME_targetPage").getSrc();

現在の IFRAME.src 属性値を表す文字列を iframeSource 変数に割り当てます。

コンテンツがIFRAMEに表示されるように URL を設定します。

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_setSrc

Xrm.Page.getControl("IFRAME_targetPage").setSrc("http://www.bing.com");

URL をコントロールの IFRAME.src になるように設定します。

IFRAMEに既定で構成されているURL を表す URL を取得します。

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_getUrl

var initialUrl = Xrm.Page.getControl("IFRAME_bing").getInitialUrl();

initialUrl 変数に、IFRAME で表示するように構成されたイニシャルURL を割り当てます。

web リソースまたはIFRAMEを示すフォームのオブジェクトを取得します。

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_getObject

var obj = Xrm.Page.getControl("IFRAME_bing").getObject();

obj 変数に、オブジェクト参照を割り当てます。IFRAMEでは、これは IFRAMEドキュメント オブジェクト モデル(DOM)の要素です。Silverlight web リソースでは、これは、オブジェクトオブジェクト 要素で、埋め込みSilverlightプラグインを表します。

このトピックの内容

検索コントロールのメソッド

検索コントロールの一般的な要件は、ユーザーがフィールドを更新するときに表示される既定のビューを指定することです。

タスク

方法

検索用のカスタム ビューを追加します。

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_addCustomView

var viewId = "{C7034F4F-6F92-4DD7-BD9D-9B9C1E996380}";
var viewDisplayName = "SDK Sample View";
var fetchXml = "<fetch version='1.0' " +
"output-format='xml-platform' " +
"mapping='logical'>" +
"<entity name='account'>" +
"<attribute name='name' />" +
"<attribute name='address1_city' />" +
"<order attribute='name' " +
"descending='false' />" +
"<filter type='and'>" +
"<condition attribute='ownerid' " +
"operator='eq-userid' />" +
"<condition attribute='statecode' " +
"operator='eq' " +
"value='0' />" +
"</filter>" +
"<attribute name='primarycontactid' />" +
"<attribute name='telephone1' />" +
"<attribute name='accountid' />" +
"<link-entity "+
"alias='accountprimarycontactidcontactcontactid' " +
"name='contact' " +
"from='contactid' " +
"to='primarycontactid' " +
"link-type='outer' " +
"visible='false'>" +
"<attribute name='emailaddress1' />" +
"</link-entity>" +
"</entity>" +
"</fetch>";
var layoutXml = "<grid name='resultset' " +
"object='1' " +
"jump='name' " +
"select='1' " +
"icon='1' " +
"preview='1'>" +
"<row name='result' " +
"id='accountid'>" +
"<cell name='name' " +
"width='300' />" +
"<cell name='telephone1' " +
"width='100' />" +
"<cell name='address1_city' " +
"width='100' />" +
"<cell name='primarycontactid' " +
"width='150' />" +
"<cell name='accountprimarycontactidcontactcontactid.emailaddress1' " +
"width='150' " +
"disableSorting='1' />" +
"</row>" +
"</grid>";
Xrm.Page.getControl("parentaccountid").addCustomView(viewId, "account", viewDisplayName, fetchXml, layoutXml, true);

viewIdviewDisplayNamefetchXmllayoutXml変数を、カスタム ビューが [親アカウント] の検索フィールドのコントロールに既定のビューとして追加できるように引数として渡すように設定します。

検索の既定ビューを取得します。

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_getDefaultView

var defaultViewId = Xrm.Page.getControl("parentaccountid").getDefaultView();

defaultViewId 変数に、既定ビューのid 値を割り当てます。

検索の既定ビューを設定します。

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_setDefaultView

var viewId = "{C7034F4F-6F92-4DD7-BD9D-9B9C1E996380}";
Xrm.Page.getControl("parentaccountid").setDefaultView(viewId);

viewId 変数のid値に [親アカウント] フィールドのコントロールの既定のビューを設定します。

検索コントロールに返されるレコードにフィルターを適用します。

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_addCustomFilter

次のコード サンプルは、営業案件フォームの [取引先企業] (parentaccountid) 検索用です。Sdk.setParentAccountIdFilter 関数がフォーム Onload イベント ハンドラーに設定されている場合、Sdk.filterCustomAccounts 関数が検索用 PreSearch イベントに追加されます。 結果として、[カテゴリ] (accountcategorycode) の値が [優先する顧客] (1) である取引先企業のみが戻されます。

var Sdk = window.Sdk || {};

Sdk.filterCustomerAccounts = function () {
    //Only show accounts with the type 'Preferred Customer'
    var customerAccountFilter = "<filter type='and'><condition attribute='accountcategorycode' operator='eq' value='1'/></filter>";
    Xrm.Page.getControl("parentaccountid").addCustomFilter(customerAccountFilter, "account");
}
//set 'Sdk.setParentAccountIdFilter' in the Opportunity form Onload event handler
Sdk.setParentAccountIdFilter = function () {
    Xrm.Page.getControl("parentaccountid").addPreSearch(Sdk.filterCustomerAccounts);
}

このトピックの内容

サブグリッド コントロールのメソッド

SubGrid コントロールはフォーム内のグリッドです。 これには 1 種類の固有の方法があります。

タスク

方法

サブグリッドの表示データの最新情報への更新

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_refresh

Xrm.Page.getControl("accountcontactsgrid").refresh();

[連絡先]subgrid を更新します。

このトピックの内容

日付コントロールのメソッド

Date コントロールには 1 つの固有のメソッドがあります。

タスク​​

方法

日付コントロールで日付の時間の部分を表示するかどうかを指定します。

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_setShowTime

Xrm.Page.getControl("createdon").setShowTime(false);

時間が表示されないように、[作成日] フィールドを設定します。

このメソッドは、41462684-3e5d-4858-8be4-1a7c4fcdeff6#BKMK_UpdatedEntties でのみ使用できます。

このトピックの内容

フォームのナビゲーション

フォームの左側のナビゲーション項目を使用して操作できます。 これらのナビゲーション アイテムは通常、フォームで表示されるレコードに関連したレコードを表示します。

Xrm.Page.ui.navigation.items コレクションを使用してナビゲーション アイテムにアクセスでき、フォームのすべてのコレクションと同様に 9b85e46f-ca6e-4313-af04-4290e3c6ab8b#BKMK_forEachと9b85e46f-ca6e-4313-af04-4290e3c6ab8b#BKMK_get メソッドがあります。

タスク

方法

ナビゲーション アイテムの名前の取得

bcf7210d-df71-43a5-8052-a76de0d4763d#BKMK_getId

var navItemIds = [];
Xrm.Page.ui.navigation.items.forEach(
function (item, index)
{ navItemIds.push(item.getId()) }
);

Xrm.Page.ui.navigation.items のコレクションの各ナビゲーション アイテムの id の値を含む navItemIds の配列を作成します。

ナビゲーション アイテムのラベルを取得します。

bcf7210d-df71-43a5-8052-a76de0d4763d#BKMK_getLabel

var navAddressesLabel = Xrm.Page.ui.navigation.items.get("navAddresses").getLabel();

navAddressesLabel 変数に [追加の住所] のナビゲーション項目のラベルを割り当てます。

ナビゲーション アイテムのラベルを設定する

bcf7210d-df71-43a5-8052-a76de0d4763d#BKMK_setLabel

Xrm.Page.ui.navigation.items.get("navAddresses").setLabel("Other Addresses");

[追加の住所] に、[追加の住所]のナビゲーション アイテムのラベルを変更します。

ナビゲーション項目を表示または非表示にする

bcf7210d-df71-43a5-8052-a76de0d4763d#BKMK_setVisible

Xrm.Page.ui.navigation.items.get("navAddresses").setVisible(false);

More Addresses ナビゲーション項目を非表示にします。

ナビゲーション アイテムを表示するかどうかを判断する

bcf7210d-df71-43a5-8052-a76de0d4763d#BKMK_getVisible

var moreAddressesVisible = Xrm.Page.ui.navigation.items.get("navAddresses").getVisible()

[追加の住所] のナビゲーション項目を表示するかどうかを示すため、moreAddressesVisible 変数にBoolean値を割り当てます。

ナビゲーション項目にフォーカスを設定します。

bcf7210d-df71-43a5-8052-a76de0d4763d#BKMK_setFocus

Xrm.Page.ui.navigation.items.get("navAddresses").setFocus();

[追加の住所] ナビゲーション項目にフォーカスを設定します。

このトピックの内容

タブおよびセクション

各フォームには、タブのコレクションが含まれます。 各タブにはセクションのコレクションがあります。 各セクションにはコントロールのコレクションがあります。 プログラムによりこれらの要素にアクセスし、それらのメソッドを使用できます。

タスク

方法

タブが展開されたか、または閉じられたかどうかを判断する

205390b9-3eda-4a2b-87cb-2a8f83f953da#BKMK_getDisplayState

var isGeneralTabExpanded = (Xrm.Page.ui.tabs.get("general").getDisplayState() == "expanded")

[一般] タブが展開されたかどうかを示す isGeneralTabExpanded 変数に Boolean 値を割り当てます。

タブを展開または閉じる

205390b9-3eda-4a2b-87cb-2a8f83f953da#BKMK_tabsetDisplayState

Xrm.Page.ui.tabs.get("general").setDisplayState("collapsed");

[全般] タブを折り畳みます。

タブを表示するかどうかを判断する

205390b9-3eda-4a2b-87cb-2a8f83f953da#BKMK_tabgetVisible

var isGeneralTabVisible = Xrm.Page.ui.tabs.get("general").getVisible();

[一般] タブが表示されるかどうかを示す isGeneralTabVisible 変数に Boolean 値を割り当てます。

タブの表示または非表示

205390b9-3eda-4a2b-87cb-2a8f83f953da#BKMK_tabsetVisible

Xrm.Page.ui.tabs.get("general").setVisible(false);

[全般] タブを非表示にします。

タブのラベルを取得する

205390b9-3eda-4a2b-87cb-2a8f83f953da#BKMK_tabgetLabel

var generalTabLabel = Xrm.Page.ui.tabs.get("general").getLabel();

generalTabLabel 変数に [一般] タブ ラベルを割り当てます。

タブのラベルを変更する

205390b9-3eda-4a2b-87cb-2a8f83f953da#BKMK_tabsetLabel

Xrm.Page.ui.tabs.get("general").setLabel("Major");

[メジャー][一般] タブのラベルを変更します。

タブにフォーカスを設定する

205390b9-3eda-4a2b-87cb-2a8f83f953da#BKMK_tabsetFocus

Xrm.Page.ui.tabs.get("general").setFocus();

[一般] タブにフォーカスを設定します。

タブの名前の取得

205390b9-3eda-4a2b-87cb-2a8f83f953da#BKMK_tabgetName

var firstTabName = Xrm.Page.ui.tabs.get(0).getName();

firstTabName 変数に、最初のタブの名前を割り当てます。

セクションのタブの取得

a90df20b-42a6-444e-9912-e0ffab11daec#BKMK_sectionGetParent

Xrm.Page.getControl("industrycode").getParent().getParent().setFocus();

[業種] フィールドを含むタブにフォーカスを設定します。

セクションを表示するかどうかを判断する

a90df20b-42a6-444e-9912-e0ffab11daec#BKMK_sectionGetVisible

var industrySectionVisible = Xrm.Page.getControl("industrycode").getParent().getVisible();

[業種] フィールドを含むセクションが表示可能かどうかを示すindustrySectionVisible変数に、Boolean の値を割り当てます。

セクションの表示または非表示

a90df20b-42a6-444e-9912-e0ffab11daec#BKMK_sectionSetVisible

Xrm.Page.getControl("industrycode").getParent().setVisible(false);

[業種] フィールドを含むセクションを非表示にします。

セクションのラベルを取得する

a90df20b-42a6-444e-9912-e0ffab11daec#BKMK_getLabel

var industryFieldSectionLabel = Xrm.Page.getControl("industrycode").getParent().getLabel();

industryFieldSectionLabel 変数に [業種] フィールドを含むセクションのラベルを割り当てます。

セクションのラベルを変更する

a90df20b-42a6-444e-9912-e0ffab11daec#BKMK_sectionSetLabel

Xrm.Page.getControl("industrycode").getParent().setLabel("Detailed Information");

[詳細な情報][業種] セクションを含むフィールドのラベルを変更します。

このトピックの内容

実行時のイベント ハンドラーの追加または削除

イベント ハンドラーは通常、アプリケーションのフォーム エディターを使用して構成されますが、実行時にこれらの APIsを使用して、フォームOnSaveのイベントおよび属性 OnChange イベントを追加することができます。 このセクションの例は次関数の定義を示しています:
function myFunction() {
//perform action here
}

匿名関数を追加できますが、その関数には削除するために参照するための名前が必要です。

タスク

方法

OnSave イベントに関数を追加する

fbaf2e7a-db2f-448f-bd24-6b3ca1ccb28e#BKMK_addOnSave

Xrm.Page.data.entity.addOnSave(myFunction);

OnSaveイベントにmyFunction関数を追加します。

OnSave イベントから関数を削除する

fbaf2e7a-db2f-448f-bd24-6b3ca1ccb28e#BKMK_removeOnSave

Xrm.Page.data.entity.removeOnSave(myFunction);

OnSave イベントに対して myFunction 関数を削除します。

属性の OnChange イベントに関数を追加します。

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_addOnChange

Xrm.Page.getAttribute("name").addOnChange(myFunction);

[アカウント名] フィールドのOnChange イベントに、myFunction関数を追加します。

属性の OnChange イベントから関数を削除する

6881e99b-45e4-4552-8355-2eef296f2cd8#BKMK_removeOnChange

Xrm.Page.getAttribute("name").removeOnChange(myFunction);

[アカウント名] フィールドのOnChange イベントに対して、myFunction関数を削除します。

検索コントロールの PreSearch イベントに関数を追加します。

51828fe3-f6ff-4f97-80ed-b06b3a354955#BKMK_addPreSearch

次のコード サンプルは、営業案件フォームの [取引先企業] (parentaccountid) 検索用です。Sdk.setParentAccountIdFilter 関数がフォーム Onload イベント ハンドラーに設定されている場合、Sdk.filterCustomAccounts 関数が検索用 PreSearch イベントに追加されます。 結果として、[カテゴリ] (accountcategorycode) の値が [優先する顧客] (1) である取引先企業のみが戻されます。

var Sdk = window.Sdk || {};

Sdk.filterCustomerAccounts = function () {
    //Only show accounts with the type 'Preferred Customer'
    var customerAccountFilter = "<filter type='and'><condition attribute='accountcategorycode' operator='eq' value='1'/></filter>";
    Xrm.Page.getControl("parentaccountid").addCustomFilter(customerAccountFilter, "account");
}
//set 'Sdk.setParentAccountIdFilter' in the Opportunity form Onload event handler
Sdk.setParentAccountIdFilter = function () {
    Xrm.Page.getControl("parentaccountid").addPreSearch(Sdk.filterCustomerAccounts);
}

業務プロセス フローのコントロールで発生するイベントに対して、d88d5f21-6385-443b-91f2-0ec0c16b1324#BKMK_OnStageChange および d88d5f21-6385-443b-91f2-0ec0c16b1324#BKMK_OnStageSelected を使用します。 これらのイベントは、イベント ハンドラーをプログラム的に追加または削除するメソッドのみを持っています。詳細:イベント ハンドラーを管理するメソッド

このトピックの内容

コンテキスト情報のメソッド

ユーザー、クライアント、組織に関する情報を取得するには、これらのメソッドを使用します。 次の表は、最も有用なコンテキスト方法の一部を示します。 すべてコンテキスト メソッドについては、クライアント側コンテキスト(クライアント側の参照)を参照してください

タスク

方法

組織に接続するには URL を取得します。

getClientUrl

var serverUrl = Xrm.Page.context.getClientUrl();

serverUrl の変数に URL を表す文字列を割り当てます。

現在のユーザーの一意識別子を取得します。

getUserId

var userId = Xrm.Page.context.getUserId();

ユーザーの ID を表す文字列を userId 変数に割り当てます。

現在のユーザー名を取得します。

getUserName

var userName = Xrm.Page.context.getUserName();

ユーザーの名前を表す文字列を userName 変数に割り当てます。

このメソッドは、41462684-3e5d-4858-8be4-1a7c4fcdeff6#BKMK_UpdatedEntties でのみ使用できます。

ユーザーが指定したユーザー インターフェイス言語を表す言語コードを取得します。

getUserLcid

var userLCID = Xrm.Page.context.getUserLcid();

userLCID 変数にユーザーが指定した言語を示す数を割り当てます。

ユーザーが関連付けられている現在のユーザーとチームに割り当てられている各セキュリティ ロールの GUID 値を表す文字列の配列を取得します。

getUserRoles

var userRoles = Xrm.Page.context.getUserRoles();

userRoles 変数にユーザーのセキュリティ ロールを表す文字列の配列を割り当てます。

スクリプトが Outlook 用 Microsoft Dynamics 365 のクライアントで動作しているかどうかを確認します。

クライアント.getClient

var isOutlookClient = (Xrm.Page.context.client.getClient() == "Outlook");

isOutlookClient変数に、コードが Outlook 用 Dynamics 365 のクライアントで動作しているかどうかを示す Boolean 値を割り当てます。

ユーザーが オフライン アクセス対応 Microsoft Office Outlook 用 Microsoft Dynamics 365 クライアントでオフラインを使用しているかどうかを確認します。

クライアント.getClientState

var IsOffline = (Xrm.Page.context.client.getClientState() == "Offline");

IsOffline変数に、ユーザーが現在オフラインで作業しているかどうかを表す Boolean 値を割り当てます。

このトピックの内容

エンティティ データの取得、更新、保存

次の表には、現在のレコードに関する情報を取得したり、変更を保存したりする場合に使用できるメソッドが含まれます。 詳細については、「Xrm.Page.data.entity (クライアント側の参照)」および「Xrm.Page.data (クライアント側の参照)」を参照してください。

タスク​​

方法

現在のエンティティの論理名を取得する

fbaf2e7a-db2f-448f-bd24-6b3ca1ccb28e#BKMK_getEntityName

var entityName = Xrm.Page.data.entity.getEntityName();

entityName変数に、論理エンティティ名を割り当てます。

現在のエンティティの主属性値を取得する。
主属性は、レコードの識別に使用される値です。 たとえば、contact.fullname

fbaf2e7a-db2f-448f-bd24-6b3ca1ccb28e#BKMK_getPrimaryAttributeValue

var primaryAttributeValue = Xrm.Page.data.entity.getPrimaryAttributeValue();

主属性の値を primaryAttributeValue 変数に割り当てます。

このメソッドは、41462684-3e5d-4858-8be4-1a7c4fcdeff6#BKMK_UpdatedEntties でのみ使用できます。

現在のレコードの Id を取得する

fbaf2e7a-db2f-448f-bd24-6b3ca1ccb28e#BKMK_getId

var recordId = Xrm.Page.data.entity.getId();

recordId 変数に、レコードのid を割り当てます。

ページを再読み込みせずに、非同期でフォームのデータを更新する。

ab100e06-a3ba-47f8-a8f8-7b5fab2ab66d#BKMK_refresh

Xrm.Page.data.refresh();

フォームのデータを更新します。

このメソッドは、41462684-3e5d-4858-8be4-1a7c4fcdeff6#BKMK_UpdatedEntties でのみ使用できます。

現在のレコードを保存する

Xrm.Page.data.entity.fbaf2e7a-db2f-448f-bd24-6b3ca1ccb28e#BKMK_save

Xrm.Page.data.entity.save();

レコードを保存します。 オプションの引数があります。 同等の操作を実行するために saveandclose または saveandnew を使用します。

レコードを非同期で、保存操作の完了後にコールバック関数を実行するように設定するオプションを使用して保存する。

Xrm.Page.data.ab100e06-a3ba-47f8-a8f8-7b5fab2ab66d#BKMK_dataSave

Xrm.Page.data.save().then(
function(){
Xrm.Utility.alertDialog("Record saved");
},
function(error){
Xrm.Utility.alertDialog(error.message);
});

レコードを保存し、保存の状態を示すメッセージを表示します。

このメソッドは、41462684-3e5d-4858-8be4-1a7c4fcdeff6#BKMK_UpdatedEntties でのみ使用できます。

現在のレコード内のいずれかのデータが変更されているかどうかを判断します。

fbaf2e7a-db2f-448f-bd24-6b3ca1ccb28e#BKMK_getIsDirty

var isDirty = Xrm.Page.data.entity.getIsDirty();

isDirty 変数に、レコードのデータが変更されたかどうかを示す Boolean 値を割り当てます。

レコードが保存されるときにサーバーに送信されるデータを表す文字列を取得します。

fbaf2e7a-db2f-448f-bd24-6b3ca1ccb28e#BKMK_getDataXml

var dataXml = Xrm.Page.data.entity.getDataXml();

dataXml変数に、保存されるデータを表す文字列を割り当てます。

このトピックの内容

関連項目

Xrm.Page オブジェクト モデルの使用
Microsoft Dynamics 365 フォームのコードを記述する
クライアント側のプログラミング リファレンス

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権