【Dynamics CRM】【Xrm.Page】フォーム上の値の取得と設定
一番基本的なフォーム上からの値の取得と設定について。
もっとも利用頻度が高いと思われる、getAttributeの利用シチュエーションを想定して記載しています。
Xrm.Page.getAttribute()
getAttributeですが、正式にはXrm.Page.data.entity.attributes.getでショートカットバージョンとして提供されているものです。
https://msdn.microsoft.com/ja-jp/library/jj602964.aspx#BKMK_AccessingAttributes
意外と忘れがちなのですが、4種類パラメータ(フィールド物理名、フォーム上のIndex、指定なし、デリゲート)を受け渡すことが可能になっています。
フィールド物理名は最もよく利用するものかと思います。
Indexはあまり利用シチュエーションが思い浮かびませんが、フォーム上で次に配置されているフィールドなどを指定する場合などには利用するかと思います。
指定なしですと、フォーム上のフィールドをすべて取得し、
デリゲートでは、Typeなどを指定して、特定の種類のフィールドをすべて取得するなどのシチュエーションに利用できます。
概要
今回はすごく単純に、あるフィールドに入力した値を他のフィールドにも設定するというものです。
パラメータで、コピー元とコピー先のフィールド物理名を指定しています。
スクリプトサンプル
function copyFieldValue(copyFrom, copyTo) { var value = Xrm.Page.getAttribute(copyFrom).getValue(); Xrm.Page.getAttribute(copyTo).setValue(value); }
指定画面
今回はコピー元フィールドのOnChangeイベントとして設定しています。
注意点
Optionsetの表示名を取得する場合getText()になります。
LookupないしPartyListの場合、配列が来ますので配列Indexを指定してから値を取得します。
Xrm.Page.getAttribute(copyFrom).getValue()[0].nameのような感じです。