複合の属性のスクリプトを記述する
公開日: 2016年11月
対象: Dynamics CRM 2015
フォームに追加されるフィールドの一部は、データの複数のアイテムを表すことができます。 これらの複合属性は、Web アプリケーションで表示するときに、他の属性とは異なる動作をするため、それらを適切に使用するスクリプトを作成する必要があります。
このトピックの内容
複合属性
Web アプリケーションの複合属性
タブレット PC 向け CRM の複合属性
違いの軽減
複合属性
次の表に複合属性を示します。
エンティティ |
[表示名] |
論理名 |
---|---|---|
Contact
|
氏名 |
fullname |
住所 1 |
address1_composite |
|
住所 2 |
address2_composite |
|
Lead
|
氏名 |
fullname |
住所 1 |
address1_composite |
|
住所 2 |
address2_composite |
|
User
|
氏名 |
fullname |
アドレス |
address1_composite |
|
住所 (その他) |
address2_composite |
|
Account
|
住所 1 |
address1_composite |
住所 2 |
address2_composite |
|
Quote
|
請求先住所 |
billto_composite |
送付先住所 |
shipto_composite |
|
Order
|
請求先住所 |
billto_composite |
送付先住所 |
shipto_composite |
|
Invoice
|
請求先住所 |
billto_composite |
送付先住所 |
shipto_composite |
Web アプリケーションの複合属性
複合属性のフィールドがメイン フォームに追加されると、Web アプリケーションは、複合属性のみを表示します。 ユーザーがフィールドを編集する場合は、複合属性を構成する個々の属性を示すポップアップが表示されます。 属性を構成するそれぞれの属性は、フォーム エディターでは明示的にフォームに追加されませんが、フォームで使用できます。getValueを使用して複合値の値を参照できますが、setValue を使用して複合属性の値を直接変更できません。複合属性によって参照される属性を 1 つまたは複数設定する必要があります。
ポップアップに表示される個々の構成コントロールに名前でアクセスできます。 これらのコントロールは、次の命名規則を使用します: <composite control name>_compositionLinkControl_<constituent attribute name>。address1_composite コントロール内の address_line1 コントロールのみにアクセスするには、Xrm.Page.getControl("address1_composite_compositionLinkControl_address1_line1") を使用します。
タブレット PC 向け CRM の複合属性
タブレット PC 用 Microsoft Dynamics CRM は、複合属性の持つエンティティで使用されている定義と同じフォーム定義を使用しますが、解釈方法が異なります。 複合属性がフォーム定義にある場合、複合属性を構成するすべての属性が、フォーム内のその部分に表示されます。 すべてのフィールドが表示されているため、ポップアップの必要はありません。 フォームに個々に属性を追加したときと同じように、個々の属性にアクセスするフォームのスクリプトを作成できます。
しかし、実際の複合コントロールは タブレット PC 用 CRM ページには存在しません。
違いの軽減
Contact、Lead、またはUser エンティティの fullname フィールドにアクセスする場合、Xrm.Page.data.entity.getPrimaryAttributeValue メソッドを使用することが、この属性の値を直接参照せずに取得するもっとも簡単な方法です。 このメソッドは、Web アプリケーションと タブレット PC 用 CRM の両方に対して機能します。
両方のクライアントと連携するために、アドレス複合属性の 1 つの値を読み取る必要があるコードがある場合、メインの Web アプリケーションまたは同じフォームの タブレット PC 用 CRM バージョンのいずれかで Xrm.Utility.alertDialog を使用してフォーマットされたアドレスを表示する次の関数のように、Xrm.Page.context.client.getClient を使用してコードを分割する必要があります。
function showAddressDialog() {
var address1_compositeValue;
if (Xrm.Page.context.client.getClient() != "Mobile") {
address1_compositeValue = Xrm.Page.getAttribute("address1_composite").getValue();
}
else {
var address1_line1 = Xrm.Page.getAttribute("address1_line1").getValue();
var address1_line2 = Xrm.Page.getAttribute("address1_line2").getValue();
var address1_line3 = Xrm.Page.getAttribute("address1_line3").getValue();
var address1_city = Xrm.Page.getAttribute("address1_city").getValue();
var address1_stateorprovince = Xrm.Page.getAttribute("address1_stateorprovince").getValue();
var address1_postalcode = Xrm.Page.getAttribute("address1_postalcode").getValue();
var address1_country = Xrm.Page.getAttribute("address1_country").getValue();
// Achieve equivalent formatting
//address1_line1
//address1_line2
//address1_line3
//address1_city, address1_stateorprovince address1_postalcode
//address1_country
var addressText = "";
if (address1_line1 != null) {
addressText += address1_line1 + "\n";
}
if (address1_line2 != null) {
addressText += address1_line2 + "\n";
}
if (address1_line3 != null) {
addressText += address1_line3 + "\n";
}
if (address1_city != null) {
addressText += address1_city + ", ";
}
if (address1_stateorprovince != null) {
addressText += address1_stateorprovince + " ";
}
if (address1_postalcode != null) {
addressText += address1_postalcode + "\n";
}
addressText += address1_country;
address1_compositeValue = addressText;
}
Xrm.Utility.alertDialog(address1_compositeValue);
}
関連項目
Microsoft Dynamics CRM 2015 フォームのコードを記述する
フォームおよびフィールド イベントの使用
Xrm.Page オブジェクト モデルの使用
タブレット PC 用 CRM でのスクリプトの記述およびデバッグ
実行コンテキストとフォーム イベント パイプラインの使用
フォーム上で IFRAME および Web リソース コントロールを使用する
フォーム スクリプトの簡易参照
クライアント側のプログラミング リファレンス
Xrm.Page.data.entity 属性 (クライアント側の参照)
© 2017 Microsoft. All rights reserved. 著作権