計算フィールドを作成して手動計算を自動化する
このトピックは、Dynamics 365 Customer Engagement (on-premises) に適用されます。 このトピックの Power Apps バージョンについては、以下を参照してください。 計算フィールドを定義して手動計算を自動化する
計算フィールドを使用して、ビジネス プロセスで使用する手動による計算を自動化することができます。 たとえば、営業担当者は営業案件の売上高の期待値を知ることが必要な場合があります。この期待値は、営業案件からの売上見込みに確率を乗じて得られた値に基づきます。 または、受注が $500 より大きい場合、値引きを自動的に適用することを望みます。 計算フィールドには、単純な数学演算や greater than または if-else などの条件付き演算から得られた値を含めることができます。 これらのすべてを、コードを記述することなく、計算フィールド機能を使用して実行できます。
計算フィールドの機能:
計算フィールドは、現在のエンティティまたは関連付けられている親エンティティのフィールドを使用する計算で構成されています。
式のサポートは、条件セクションとアクションセクションにある、現在のエンティティと、関連付けられている親エンティティ フィールドで使用できます。 組み込みの関数には次のものがあります。
ADDHOURS、ADDDAYS、ADDWEEKS、ADDMONTHS、ADDYEARS、SUBTRACTHOURS、SUBTRACTDAYS、SUBTRACTWEEKS、SUBTRACTMONTHS、SUBTRACTYEARS、DIFFINDAYS、DIFFINHOURS、DIFFINMINUTES、DIFFINMONTHS、DIFFINWEEKS、DIFFINYEARS、CONCAT、TRIMLEFT、TRIMRIGHT。
リッチな条件サポートにより、分岐や複数の条件を指定できます。 論理演算子には、AND と OR 演算子が含まれます。
ビジュアル編集機能によって、最近のユーザー インターフェイスと Intellisense がアクションセクションに組み込まれます。
計算フィールドと、フォーム、ビュー、グラフ、およびレポートとのシームレスな統合がリアルタイムで使用できます。
Online 組織を Dynamics 365 (online) 用の 2016 年 12 月の更新プログラムに更新すると、ユーザー定義コントロールを使用するために、計算フィールドを構成できます。
計算フィールドのいくつかの例
売上高の期待値: 確率を乗じた売上見込み
純資産: 特定の取引先企業に対する負債を差し引いた資産
労務費: 40 時間までの基本給に時間外手当てを加算
取引先担当者番号: 取引先企業または取引先担当者に基づいた営業案件に対する電話番号
潜在顧客のスコア: 特定の潜在顧客の質を把握できる単一のフィールド
フォローアップ期日: 重要度に基づいた指定した日数で活動をフォローアップ
重要
計算フィールドを作成するには、フィールド セキュリティ プロファイル エンティティに対する書き込み特権が必要です。 セキュリティを設定したフィールドが計算フィールドで計算に使用される場合、ユーザーがアクセス許可のないデータにアクセスできないようにするために、計算フィールドのセキュリティの設定も検討する必要があります。 セキュリティで保護されたフィールドを計算で使用する計算フィールドを作成すると、計算フィールド エディターは警告を発して、計算フィールドのセキュリティ設定を勧めます。 詳細: フィールド レベル セキュリティ
計算フィールドの例
計算フィールドの例をより詳細に見てみましょう。 フィールド エディターを使用して、計算フィールドを定義します。 フィールド エディターを開くには、次の手順に従います。
ソリューション エクスプローラーを開きます
コンポーネント>エンティティを展開します。
必要なエンティティを選択し、フィールドを選択します。 新規を選択します。
エディターで、フィールドの種類およびデータの種類を含む必要な情報をフィールドに設定します。 フィールドの種類は計算です。 計算フィールドで使用可能なデータの種類:
1 行のテキスト
オプション セット
2 つのオプション
整数
10 進数
通貨
日付と時間
フィールドの種類の隣の編集ボタンを使用すると、計算フィールド定義エディターが表示されます。このエディターで計算フィールドが作成されますが、数式はまだ設定されていません。 計算フィールドの定義は、条件とアクションの 2 つのセクションで構成されます。
条件セクションで、エンティティ、フィールド、演算子、種類、および値を指定できます。 エンティティのドロップダウン ボックスで、現在のエンティティまたは関連エンティティを選択できます。 フィールドドロップダウン ボックスで、エンティティのすべての使用できるフィールドを選択できます。 選択する演算子に基づいて、種類と値を指定する必要があります。
AND
またはOR
演算子を使用して、複数の条件を指定できます。アクションセクションで、計算フィールドの数式を指定します。
Note
アクション内で検索レコードのデータも使用できます。 最初に検索フィールドを選択してから期間を入力する必要があります。 その後に、関連エンティティで使用できるフィールドを 1 つ選択できます。 たとえば、<LookupFieldName>.<RelatedFieldName> の場合、ParentAccountId.AccountNumber を選択することができます。
フィールド レベル セキュリティは関連するエンティティでは無視されるため、アクセスされたフィールドに機密データが含まれている場合は、計算フィールドもセキュリティ保護するよう提案するようにしてください。
営業案件の売上高の期待値
この例では、営業案件エンティティのフィールドを使用して、営業案件の確率に基づいた売上高の期待値を計算します。 営業案件エンティティのフィールド エディターで、"売上高の期待値" という名前のフィールドを作成し、そのフィールドの種類を計算として、そのデータの種類を通貨として指定します。 計算フィールド定義エディターの条件セクションで、営業案件を Status = Open を使用して指定します。 アクションでは、数式は、営業案件の確率を乗じた営業案件売上見込みに基づいて、売上高の期待値を計算します。 次のスクリーンショットに、売上高の期待値の計算フィールドを定義する方法を順を追って説明しています。
"売上高の期待値"という名前の計算フィールドの作成:
営業案件の条件の設定:
売上高の期待値の数式の指定:
全体:
営業案件のフォローアップ日付
この例では、営業案件を発生した潜在顧客のフィールドを使用して、営業案件の追跡に適切な日付を計算します。 営業案件エンティティのフィールド エディターで、"フォローアップ日付" という名前のフィールドを作成し、そのフィールドの種類を計算として、そのデータの種類を日付と時間として指定します。 計算フィールド定義エディターの条件セクションで、潜在顧客の購入の概算時間とその推測値の 2 つの条件を指定します。 アクションでは、2 つの数式を指定します。1 つは、緊急の案件に対して 1 週間でフォローアップするための数式です。もう 1 つは、営業案件がすぐ発生しなかった場合に 1 ヶ月でフォローアップするための数式です。 次のスクリーンショットに、”フォローアップ日付” の計算フィールドを定義する方法を順を追って説明しています。
"フォローアップ日付"という名前の計算フィールドの作成:
元の潜在顧客に次の 2 つの条件を設定:
1 週間でフォローアップする数式を指定:
1 ヶ月でフォローアップする数式を指定:
全体:
レコード作成からの日数
この例では、DIFFINDAYS 関数を使用して、レコードを作成した時点から現在の日付までの差を日数で計算します。
"日数で計算した差" と呼ばれる計算フィールドの作成:
差を日数で計算する公式の提供
全体:
計算フィールドは、構文に機能します。
次の表に、計算フィールドのアクションセクションで提供される関数の構文を示します。
チップ
関数名は大文字で指定されます。
関数の構文 | 説明 | 返り値の種類 |
---|---|---|
ADDDAYS (整数、日時) | 特定の日時に指定された日数を加算した新しい日時を返します。 | 日付と時間 |
ADDHOURS (整数、日時) | 特定の日時に指定された時間数を加算した新しい日時を返します。 | 日付と時間 |
ADDMONTHS (整数、日時) | 特定の日時に指定された月数を加算した新しい日時を返します。 | 日付と時間 |
ADDWEEKS (整数、日時) | 特定の日時に指定された週数を加算した新しい日時を返します。 | 日付と時間 |
ADDYEARS (整数、日時) | 特定の日時に指定された年数を加算した新しい日時を返します。 | 日付と時間 |
SUBTRACTDAYS (整数、日時) | 特定の日時から指定された日数を減算した新しい日時を返します。 | 日付と時間 |
SUBTRACTHOURS (整数、日時) | 特定の日時から指定された時間数を減算した新しい日時を返します。 | 日付と時間 |
SUBTRACTMONTHS (整数、日時) | 特定の日時から指定された月数を減算した新しい日時を返します。 | 日付と時間 |
SUBTRACTWEEKS (整数、日時) | 特定の日時から指定された週数を減算した新しい日時を返します。 | 日付と時間 |
SUBTRACTYEARS (整数、日時) | 特定の日時から指定された年数を減算した新しい日時を返します。 | 日付と時間 |
DIFFINDAYS (日付と時刻、日付と時刻) | 2 つの日付と時刻フィールド間の差を日数で返します。 両方の日付と時刻が同じ日に入れば、その差は 0 になります。 | 整数 |
DIFFINHOURS (日付と時刻、日付と時刻) | 2 つの日付と時刻フィールド間の差を時間で返します。 | 整数 |
DIFFINMINUTES (日付と時刻、日付と時刻) | 2 つの日付と時刻フィールド間の差を分の単位で返します。 | 整数 |
DIFFINMONTHS (日付と時刻、日付と時刻) | 2 つの日付と時刻フィールド間の差を月の単位で返します。 両方の日付と時刻が同じ月に収まれば、その差は 0 になります。 | 整数 |
DIFFINWEEKS (日付と時刻、日付と時刻) | 2 つの日付と時刻フィールド間の差を週の単位で返します。 両方の日付と時刻が同じ週に収まれば、その差は 0 になります。 | 整数 |
DIFFINYEARS (日付と時刻、日付と時刻) | 2 つの日付と時刻フィールド間の差を年の単位で返します。 両方の日付と時刻が同じ年に収まれば、その差は 0 になります。 | 整数 |
CONCAT (単一行のテキスト、単一行のテキスト、…単一行のテキスト) | 複数の文字列を連結した結果の文字列を返します。 | 文字列 |
TRIMLEFT (1 行テキスト、整数) | 最初の N 文字なしの指定された文字列のコピーを含む文字列を返します。 | 文字列 |
TRIMRIGHT (1 行テキスト、整数) | 最後の N 文字なしの指定された文字列のコピーを含む文字列を返します。 | String |
Note
すべての DIFF 機能では、最初の日付と時刻フィールドと 2 番目の日付と時刻フィールドの動作が、ユーザー ローカル、日付のみ、またはタイム ゾーン非依存のいずれかと同じであることが要求されます。 2 番目のフィールドの動作が最初のフィールドの動作と一致品場合、2 番目のフィールドを現在の関数で使用できないことを示すエラー メッセージが表示されます。 詳細: 日時フィールドの動作と形式。
Note
計算フィールドで日付値として 01/01/2015 などの日付を入力することはできません。 日付と日時の値は、別の日時フィールドを使用してのみ設定または比較することができます。
CONCAT 関数では、複数の 1 行テキスト、1 行テキストを含むエンティティ フィールド、またはその両方の組み合わせとして文字列を使用できます。 例: CONCAT (FirstName、LastName、"管理者である。") 文字列に引用符が含まれる場合は、“This string contains the \”quotation marks.\”” のようにバックスラッシュ (\) エスケープ文字を各引用符より前にします。これにより、文字列内の引用符が文字列を区切る特殊文字として扱われなくなります。
次の例は、TRIMLEFT 関数と TRIMRIGHT 関数の使用方法を示しています。 これらには、TRIMLEFT 関数と TRIMRIGHT 関数によって返される最初の文字列と結果文字列が含まれています。
TRIMLEFT (“RXX10-3456789”, 3) は文字列 “10-3456789” を返します。
TRIMRIGHT (“20-3456789RXX”, 3) は文字列 “20-3456789” を返します。
計算フィールドに関する考慮事項
計算フィールドを使用するときは、次の特定の要件と制限に注意ください。
保存されたクエリ、グラフ、およびビジュアル化には、固有の計算フィールドを最大 10 まで含めることができます。
計算フィールドの値は、タイル ビューまたはエンティティのメイン フォームで、Customer Engagement Outlook オフライン モードでは表示されません。
連鎖した計算フィールドの最大数は 5 です。
計算フィールドは自己参照したり、サイクリック チェーンを使用することはできません。
複数条件節の条件演算子の 1 つを変更すると、すべての条件演算子がその条件に更新されます。 たとえば、
IF (x > 50) OR (y ==10) OR (z < 5)
の節で、OR
演算子をAND
演算子に変更すると、その節に含まれるすべてのOR
演算子がAND
演算子に変更されます。<LookupFieldName>.<FieldName>
などの親エンティティへの検索フィールドを介して、親フィールドにアクセスできます。 これは、Account
またはContact
となるCustomer
のような複数エンティティの検索フィールドに対しては適用できません。 ただし、一部のエンティティには、ParentAccountid.<FieldName>
またはParentContactid.<FieldName>
などの、特定のエンティティに対する個別の検索フィールドが含まれます。以下に対しては、並べ替えは使用できません。
親レコードのフィールドを含んだ計算フィールド。
論理フィールド ([住所] フィールドなど) を含む計算フィールド。
別の計算フィールドを含む計算フィールド。
計算フィールドは 2 つのエンティティにのみまたがることができます。
計算フィールドには、別のエンティティのフィールドを含めることができます (2 つのエンティティがその対象の範囲 – 現在のエンティティと親レコード)。
計算フィールドには、別のエンティティの別のフィールドを含む別のエンティティの計算フィールド (3 つのエンティティの長さ) を含めることはできません。
(現在のエンティティ) 計算フィールド <- (親レコード) 計算フィールド 1 <- (親レコード) 計算フィールド 2。
計算フィールドでワークフローまたはプラグインをトリガーすることはできません。
既存の単純なフィールドを計算フィールドに変更することはできません。 現在のアプリケーションが JavaScript またはプラグインを使用している場合、計算フィールド機能を使用するには、新しいフィールドを作成する必要があります。
重複データ検出ルールは集計フィールドでトリガーされません。
ロールアップは、他の計算フィールドのすべてのフィールドが現在のエンティティにある場合も、他の計算フィールドを使用する計算フィールドを参照できません。
関連項目
フィールドの作成および編集
ロールアップ フィールドを定義する
ビデオ: ロールアップおよび Dynamics CRM 2015 の計算フィールド