計算フィールドを定義して手動計算を自動化する

注意

Effective November 2020:

  • Common Data Service has been renamed to Microsoft Dataverse. Learn more
  • Some terminology in Microsoft Dataverse has been updated. For example, entity is now table and field is now column. Learn more

This article will be updated soon to reflect the latest terminology.

計算フィールドを使用して、ビジネス プロセスで使用する手動計算を自動化します。

たとえば、営業担当者は営業案件の売上高の期待値を知ることが必要な場合があります。この期待値は、営業案件からの売上見込みに確率を乗じて得られた値に基づきます。 または、受注が $500 より大きい場合、値引きを自動的に適用することを望みます。 計算フィールドには、単純な数学演算や greater than または if-else などの条件付き演算から得られた値を含めることができます。 これらのすべてを、コードを記述することなく、Power Apps を使用して実行できます。

機能

  • 計算フィールドは、現在のエンティティまたは親エンティティのフィールドを使用します。
  • 式のサポートは、条件 セクションと アクション セクションにある、現在のエンティティと、関連付けられている親エンティティ フィールドで使用できます。 組み込みの関数には次のものがあります。
    ADDHOURSADDDAYSADDWEEKSADDMONTHSADDYEARSSUBTRACTHOURSSUBTRACTDAYSSUBTRACTWEEKSSUBTRACTMONTHSSUBTRACTYEARSDIFFINDAYSDIFFINHOURSDIFFINMINUTESDIFFINMONTHSDIFFINWEEKSDIFFINYEARSCONCATTRIMLEFTTRIMRIGHT
  • リッチな条件サポートにより、分岐や複数の条件を指定できます。 論理演算子には、ANDOR 演算子が含まれます。
  • ビジュアル編集機能によって、最近のユーザー インターフェイスと Intellisense が アクション セクションに組み込まれます。
  • 計算フィールドと、フォーム、ビュー、グラフ、およびレポートとのシームレスな統合がリアルタイムで使用できます。
  • カスタム コントロールを使用するように計算フィールドを構成できます。

シナリオ

  • 売上高の期待値: 確率を乗じた売上見込み
  • 純資産: 特定の取引先企業に対する負債を差し引いた資産
  • 労務費: 40 時間までの基本給に時間外手当てを加算
  • 取引先担当者番号: 取引先企業または取引先担当者に基づいた営業案件に対する電話番号
  • 潜在顧客のスコア: 特定の潜在顧客の質を把握できる単一のフィールド
  • フォローアップ期日: 重要度に基づき指定した日数で活動をフォローアップ

重要

計算フィールドを作成するには、フィールド セキュリティ プロファイル エンティティに対する書き込み特権が必要です。 セキュリティを設定したフィールドが計算フィールドで計算に使用される場合、ユーザーがアクセス許可のないデータにアクセスできないようにするために、計算フィールドのセキュリティの設定も検討する必要があります。 セキュリティで保護されたフィールドを計算で使用する計算フィールドを作成すると、計算フィールド エディターは警告を発して、計算フィールドのセキュリティ設定を勧めます。 詳細: アクセスを制御するフィールド レベル セキュリティ

計算フィールドの作成

フィールド エディターを使用して計算フィールドを指定します。 この例では、Power Apps を使用しますが、手順はソリューション エクスプローラーを使用するのと共通しています。 詳細: フィールドの作成と編集

  1. [Power Apps を開く]

  2. データ > エンティティ を展開します。

  3. 必要なエンティティを選択し、フィールド を選択します。 フィールドの追加 を選択します。

  4. 表示名,名前 および データの種類 など、フィールドに必要な情報を提供します。

  5. データの種類が計算フィールドをサポートする種類の 1 つである場合は、追加 > 計算 を選択して、フィールドを計算フィールドにすることができます。

    計算フィールドの作成

    これらは計算をサポートするフィールドの種類です。

    • Text
    • [オプション セット]
    • 2 つのオプション
    • 整数
    • 10 進数
    • [通貨]
    • 日時
  6. 計算 を選択するには、エンティティへの変更を保存する必要があります。 保留中の変更 ダイアログで、保存 をクリックして続行します。

  7. これにより、計算フィールド定義エディターが開き、計算フィールドが作成されますが、数式はまだ設定されていません。 計算フィールドの定義は、条件アクション の 2 つのセクションで構成されます。
    新しいフィールド計算フォーム

  • 条件 セクションで、エンティティ、フィールド、演算子、種類、および値を指定できます。 エンティティ のドロップダウン ボックスで、現在のエンティティまたは関連エンティティを選択できます。 フィールド ドロップダウン ボックスで、エンティティのすべての使用できるフィールドを選択できます。 選択する演算子に基づいて、種類と値を指定する必要があります。 AND または OR 演算子を使用して、複数の条件を指定できます。
  • アクション セクションで、計算フィールドの数式を指定します。

注意

アクション内で検索レコードのデータも使用できます。 最初に検索フィールドを選択してから期間を入力する必要があります。 その後に、関連エンティティで使用できるフィールドを 1 つ選択できます。 たとえば、<LookupFieldName>.<RelatedFieldName> の場合は、以下を選択できます: ParentAccountId.AccountNumber

フィールド レベル セキュリティは関連するエンティティでは無視されるため、アクセスされたフィールドに機密データが含まれている場合は、計算フィールドもセキュリティ保護するよう提案するようにしてください。

計算フィールドの例をより詳細に見てみましょう。

営業案件の売上高の期待値

この例では、営業案件エンティティのフィールドを使用して、営業案件の確率に基づいた売上高の期待値を計算します。 営業案件エンティティのフィールド エディターで、売上高の期待値 という名前のフィールドを作成し、そのフィールドの種類を 計算 として、そのデータの種類を 通貨 として指定します。

計算フィールド定義エディターの 条件 セクションで、営業案件を Status = Open を使用して指定します。 アクション では、数式は、営業案件の確率を乗じた営業案件売上見込みに基づいて、売上高の期待値を計算します。 次のスクリーンショットに、売上高の期待値 の計算フィールドを定義する方法を順を追って説明しています。

営業案件の条件の設定:

Dynamics 365 での売り上げ期待値の設定

売上高の期待値の数式の指定:

Dynamics 365 での売上期待予想値の設定

全体:

売上高の見込み期待値 Dynamics 365 での売上

営業案件のフォローアップ日付

この例では、営業案件を発生した潜在顧客のフィールドを使用して、営業案件の追跡に適切な日付を計算します。

営業案件エンティティのフィールド エディターで、フォローアップ日付 という名前のフィールドを作成し、そのフィールドの種類を 計算 として、そのデータの種類を 日付と時間 として指定します。

計算フィールド定義エディターの 条件 セクションで、潜在顧客の購入の概算時間とその推測値の 2 つの条件を指定します。

アクション では、2 つの数式を指定します。

  • 緊急の案件に対して 1 週間でフォローアップ
  • 営業案件がすぐ発生しなかった場合には 1 ヶ月でフォローアップします。

次のスクリーンショットに、フォローアップ日付 の計算フィールドを定義する方法を順を追って説明しています。

元の潜在顧客に次の 2 つの条件を設定:

Dynamics 365 内の営業案件のフォローアップ日付

Dynamics 365 内の営業案件のフォローアップ日付

1 週間でフォローアップする数式を指定:

Dynamics 365 内の営業案件のフォローアップ日付

1 ヶ月でフォローアップする数式を指定:

Dynamics 365 で日付フォローアップを設定

全体:

Dynamics 365 で If-Then & Else を使い日付フォローアップを設定

レコード作成からの日数

この例では、DIFFINDAYS 関数を使用して、レコードを作成した時点から現在の日付までの差を日数で計算します。

日数で計算した差 という名前の新しい整数フィールドを作成します。

差を日数で計算する公式の提供

計算フィールド、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 文字なしの指定された文字列のコピーを含む文字列を返します。 文字列

注意

すべての DIFF 機能では、最初の 日付と時刻 フィールドと 2 番目の 日付と時刻 フィールドの動作が、ユーザー ローカル日付のみ、または タイム ゾーン非依存 のいずれかと同じであることが要求されます。 2 番目のフィールドの動作が最初のフィールドの動作と一致品場合、2 番目のフィールドを現在の関数で使用できないことを示すエラー メッセージが表示されます。 詳細: 日時フィールドの動作と形式

注意

計算フィールドで日付値として 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 まで含めることができます。
  • 計算フィールドの値は、タイル ビューまたはエンティティのメイン フォームで、オフラインモードの Outlook のクライアントには表示されません。
  • 連鎖した計算フィールドの最大数は 5 です。
  • 計算フィールドは自己参照したり、サイクリック チェーンを使用することはできません。
  • 複数条件節の条件演算子の 1 つを変更すると、すべての条件演算子がその条件に更新されます。 たとえば、IF (x > 50) OR (y ==10) OR (z < 5) の節で、OR 演算子を AND 演算子に変更すると、その節に含まれるすべての OR 演算子が AND 演算子に変更されます。
  • <LookupFieldName>.<FieldName> などの親エンティティへの検索フィールドを介して、親フィールドにアクセスできます。 これは、取引先企業または取引先担当者となる顧客のような複数エンティティの検索フィールドに対しては適用できません。 ただし、一部のエンティティには、ParentAccountid.<FieldName> または ParentContactid.<FieldName> などの、特定のエンティティに対する個別の検索フィールドが含まれます。
  • 以下に対しては、並べ替えは使用できません。
    • 親レコードのフィールドを含んだ計算フィールド。
    • 論理フィールド (住所フィールドなど) を含んだ計算フィールド
    • 別の計算フィールドを含んだ計算フィールド。
  • 計算フィールドは 2 つのエンティティにのみまたがることができます。
    • 計算フィールドには、別のエンティティのフィールドを含めることができます (2 つのエンティティがその対象の範囲 – 現在のエンティティと親レコード)。
    • 計算フィールドには、別のエンティティの別のフィールドを含む別のエンティティの計算フィールド (3 つのエンティティの長さ) を含めることはできません。
      (現在のエンティティ) 計算フィールド← (親レコード) 計算フィールド 1 ← (親レコード) 計算フィールド 2。
  • 計算フィールドでワークフローまたはプラグインをトリガーすることはできません。
  • 既存の単純なフィールドを計算フィールドに変更することはできません。 現在のアプリケーションが JavaScript またはプラグインを使用している場合、計算フィールド機能を使用するには、新しいフィールドを作成する必要があります。
  • 重複データ検出ルールは集計フィールドでトリガーされません。
  • ロールアップは、他の計算フィールドのすべてのフィールドが現在のエンティティにある場合も、他の計算フィールドを使用する計算フィールドを参照できません。

関連項目

フィールドの作成および編集
値を集約するロールアップ フィールドを定義
ビデオ: ロールアップおよび計算フィールド