Administrator 練習問題 Q217
Cloud Kicksのセールスユーザーは、AccountオブジェクトのindustryフィールドのデータがOpportunityページレイアウトに表示されることを要求しています。これを実現するには、管理者はどのタイプのフィールドを作成する必要がありますか?
左の○で回答を選択。本文を押すと横線で除外でき、もう一度押すと戻せます。
1つ選択してください(0/1)
正答:C. クロスオブジェクト数式項目
解説
前提知識
取引先と商談の関係
商談(Opportunity)には取引先(Account)への標準リレーションがあります。取引先が設定された商談では、取引先を関連先、商談を関連元として、その取引先の項目を数式から参照できます。1つの取引先に複数の商談を関連付けられます。
数式項目とは
値を人が入力するのではなく、計算式の結果を自動表示する読み取り専用の項目です。Excelの数式セルと同じ発想ですが、レコードごとに自動で再計算されます。値そのものは保存されず、表示するたびに計算されます。
クロスオブジェクト数式項目とは
数式の中で、リレーションでつながった関連先オブジェクトの項目を参照する数式項目です。取引先が設定された商談では、商談側の数式から取引先の業種を参照できます。業種は選択リスト項目なので、そのままではテキスト型の数式として使用できません。TEXT 関数で文字列へ変換します。
TEXT(Account.Industry)
コピーではなく参照なので、取引先の業種を変更すれば、その取引先にひもづくすべての商談の表示が同時に変わります。二重管理が起きないのが最大の利点です。
💡 ここがまだモヤッとする方へ。参照できる向きや似た手段との違いを一から整理した記事を用意しています → クロスオブジェクト数式項目とは何か:親レコードの値を子レコードに映す仕組み
設問の状況を分解する
- データの正は取引先の業種項目にある
- 営業ユーザーは商談のページでその値を見たい
- つまり、子(商談)から親(取引先)の値を参照する手段が必要 初学者がやりがちなのは、商談側に同じ名前のカスタム項目を作って値を入れてしまうことです。これをすると、取引先の業種が変わったときに商談側が古い値のまま取り残されます。同じ情報を二か所で持たないのが、Salesforceでの正しい設計です。
選択肢の検討
A. カスタムアカウントフィールド → ✕
取引先側に新しいカスタム項目を作る、という意味です。しかし業種は取引先にすでに存在する標準項目であり、増やす必要はありません。そして取引先に項目を追加しても、商談の画面には何も出ません。
B. 標準アカウントフィールド。 → ✕
業種は確かに取引先の標準項目です。しかし設問が聞いているのは「これを実現するにはどのタイプの項目を作る必要があるか」です。既存の標準項目は作るものではなく、また取引先側にあるだけでは商談に表示されません。事実として正しくても、設問への答えになっていません。
C. クロスオブジェクト数式項目 → ⭕ 正解
商談側に戻り値がテキストの数式項目を作り、TEXT(Account.Industry) と定義すれば、その商談に関連付けられた取引先の業種が表示されます。データを複製せず、取引先の業種が変わると表示結果も更新されます。
D. 主従関係項目 → △(惜しいが不正解)
リレーションを新設する項目である点は近いのですが、商談には取引先への標準リレーションがすでにあります。業種を表示するために新しい関係を作る必要はありません。主従関係は所有権・共有・削除動作にも影響する強い関係であり、値を1つ参照表示したいだけの要件には過剰です。関連先の値を表示するならクロスオブジェクト数式、従レコードを集計するなら主従関係と積み上げ集計、と切り分けてください。
管理者としての対処手順
- [設定]→[オブジェクトマネージャ]→[商談]を選択(値を表示したい側=子)
- [項目とリレーション]→[新規]
- データ型に数式を選択
- 項目の表示ラベルを「取引先業種」などにし、戻り値の型にテキストを選ぶ
- 数式エディタで[高度な数式]→[項目の挿入]→[商談]→[取引先]→[業種]とたどる
- 挿入直後の
Account.Industryは選択リストを直接参照しているため構文エラーになります。TEXT(Account.Industry)に修正し、[構文を確認]でエラーがないことを確認して保存 - 商談のページレイアウトに配置し、項目レベルセキュリティを確認する
| やりたいこと | 使う機能 |
|---|---|
| 親の値を子に表示する | クロスオブジェクト数式項目 |
| 子の合計・件数を親に表示する | 積み上げ集計項目(主従関係が前提) |
| 取得した時点の値を子に固定保存する | フローによる項目更新 |
| 新しい関連そのものを作る | 参照関係項目・主従関係項目 |
あわせて覚えておきたいポイント
- クロスオブジェクト数式は、数式を置いたレコードから関連先レコードへリレーションをたどって値を参照します。「取引先に商談の合計金額を出したい」と言われたら、通常は積み上げ集計など別の集計手段を検討します。
- 1つのオブジェクトでクロスオブジェクト数式がたどれるリレーション数には上限があります。設計時は既存の数式・入力規則・ワークフロー数式なども含めて確認します。
- クロスオブジェクト数式は、参照先レコードを直接参照できないユーザーにも参照先項目の値を表示する場合があります。機密情報を数式で公開しないよう、数式項目の項目レベルセキュリティとページ配置を確認します。
- 数式項目は読み取り専用なので、営業ユーザーが商談側で値を書き換えることはできません。データの正を取引先に保ったまま表示できます。
出典(Salesforce公式)
- What Is a Cross-Object Formula? — クロスオブジェクト数式はリレーションでつながった別オブジェクトの項目を参照できる(本問の決定的根拠)。また、参照先レコードへの直接アクセスがないユーザーに値が表示される場合があるため、機密情報の扱いに注意が必要である。
- Building Cross-Object Formulas in the Simple Formula Tab — 関連先の項目を数式へ挿入し、リレーション名を使って参照する公式手順を示している。
- TEXT — 商談の数式項目で取引先の業種を表示する公式例は
TEXT(Account.Industry)であり、選択リスト値をテキストへ変換する必要がある。 - Maximum Spanning Relationships Exceeded — クロスオブジェクト数式などが参照できるリレーション数には組織単位の上限がある。
- Effects of Converting a Salesforce Master-Detail Relationship to Lookup — 主従関係が削除動作、所有権、共有に影響する強い関係であることを示している。