Freigeben über


Dynamics CRM 2015/Online 2015 更新プログラム 新しいフィールドの種類 : 計算列 詳細

みなさん、こんにちは。

今回は Microsoft Dynamics CRM 2015 および Microsoft Dynamics CRM Online
2015 更新で追加されたフィールドの種類より、計算列の詳細を紹介します。

この記事はシリーズものですので、以前の記事は以下リンクよりご覧ください。

新しいフィールドの種類 : 概要
新しいフィールドの種類 : ロールアップ列 入門
新しいフィールドの種類 : ロールアップ列 詳細
新しいフィールドの種類 : 計算列 入門
新しいフィールドの種類 : 計算列エディターの機能

計算式の保持先

計算列はロールアップ列と異なり、データベースのテーブル上に実体となる
列を持たず、レコードが取得されるたびに都度計算されます。設定した計算
式は SQL の関数として保存されます。

[計算列で作成された SQL 関数]
image

計算の挙動

計算列の値はレコードを取得した際に 1 度だけ実行されるため、フォームに
配置した計算列の値は、計算元の値がレコード表示中に変更されても変更は
されません。以下に簡単な確認を行います。

1. 取引先企業エンティティに、取引先企業名をコピーするだけの 1 行文字列
計算列を追加してフォームに配置します。

2. 任意のレコードを開き、値がコピーされていることを確認します。
image

3. 「取引先企業名」を変更します。この際計算列は値が変わらないことを
確認します。
image

4. レコードを保存します。画面がリフレッシュされるタイミングで計算列が
再計算されて値が更新されます。
image

計算に利用できる値と暗黙の変換

計算列は通常フィールドだけでなく、他の計算列やロールアップ列の値も
計算対象として利用できます。ただし自分自身を参照することはできません。
計算列は計算式に利用するフィールドによって単純と複雑に分類されます。

単純な計算列 - 同じレコードの単純フィールド値を利用している場合
複雑な計算列 - 他の計算列や論理列 (住所や氏名)、関連の列を利用する場合

計算式内では型が異なる場合、以下のパターンで変換が可能です。
10進数 –> 整数、通貨型、文字列
整数 –> 10 進数、通貨型、文字列
通貨型 -> 10進数、整数、文字列
日付型 -> 文字列

利用可能な場所

フォームやビューだけでなく、グラフ、レポート、高度な検索の条件にも
利用が可能です。また SDK からクエリすることも可能です。

制限

最後に計算列の制限を紹介します。

- ビューで利用する場合、複雑な計算列は並べ替えに利用できません。
- ワークフローやプラグインのトリガーにできません。
- ワークフローの待機条件として利用できません。
- 顧客のように親が複数存在する参照の場合、計算式に含められません。
- ビューやグラフで利用する場合、含められる計算列は 10 個までです。
- オフライン利用時には値は常に Null になります。
- 既存のフィールドを計算列に変換できません。
- 2 つ以上のエンティティに連鎖する計算列は作れません。
- 日付型の値を文字列をして取得する場合、ユーザー設定のタイムゾーン
は考慮されません。
- オプションセットは条件として利用可能ですが計算式には利用できません。
- 複雑な計算列はロールアップ列からは利用できません。

まとめ

計算列とロールアップ列は似ているようで、実は計算の仕方や値の持ち方
対象とできるエンティティなど真逆の性質を持ちます。その一方で相互で
利用できる補完関係にもある面白い機能です。

これまで開発が必須であった処理がカスタマイズで行えることで、開発の
工数削減だけでなく、テスト工数も減りますしアップグレード時の心配も
なくなります。既に似たような機能を開発で実装している場合にも、是非
こちらの機能を評価いただき、切り替えをご検討ください。

- 中村 憲一郎