Administrator 練習問題 Q150
Universal Containersの営業担当副社長は、営業チームのメンバーが商談の完了予定日を過去の日付に変更することを防ぎたいと考えています。この要件を満たすために、管理者は何を構成する必要がありますか?
左の○で回答を選択。本文を押すと横線で除外でき、もう一度押すと戻せます。
1つ選択してください(0/1)
正答:B. 検証ルール
解説
前提知識
検証ルール(入力規則)
レコードの保存時に走る門番です。管理者が書いた数式が True を返すと、保存自体がブロックされ、エラーメッセージが表示されます。 Salesforce公式ヘルプは、検証ルールのエラーメッセージの書き方の例としてまさに「完了予定日は今日より後にしてください」を挙げています。この設問は公式ドキュメントの典型例そのままです。
💡 ここがまだモヤッとする方へ → 検証ルールとは何か:「Trueなら保存させない」で考える入力チェック
商談の完了予定日(Close Date)
商談がいつ成約または失注する見込みかを表す標準の日付項目です。この設問の「商談を過去の日付に変更する」は、完了予定日を過去日に設定することを指します。
設問の状況を分解する
要件は「営業メンバーが商談の完了予定日を過去の日付に変更することを防ぐ」ことです。 ここで問うべきは、「防ぐ」のレベルです。
| やりたいこと | 使う機能 |
|---|---|
| 保存そのものを止めたい | 検証ルール |
| 項目を見せない・編集させない | 項目レベルセキュリティ |
| 保存後に人がチェックする | 承認プロセス |
| 所有者を自動で決める | 割り当てルール |
「特定の値の入力だけを拒否したい」という要件なので、検証ルール一択です。他の3つはそもそも「保存を止める」能力を持ちません。
選択肢の検討
A. 割り当てルール
✕ 割り当てルールはレコードの所有者を自動で決める機能で、主にケースとリードで使います。項目の値を検査して保存を拒む機能ではありません。
B. 検証ルール
⭕ 正解
CloseDate < TODAY() というエラー条件式を書けば、完了予定日が今日より前のときに数式が True になり、保存がブロックされます。新規作成でも編集でも、APIやデータインポート経由の更新でも同じように効きます。
C. フィールドレベルのセキュリティ
△(惜しいが不正解) 項目を読み取り専用にすれば変更は防げます。しかしそれでは正当な日付変更もすべてできなくなります。商談の完了予定日は営業が日々更新すべき項目なので、過剰な制限です。問われているのは「過去の日付だけを防ぐ」ことです。
D. 承認プロセス
✕ 承認プロセスは「レコードを保存したあとで人が承認・却下を判断する」仕組みです。データはいったん保存されてしまうので、不正な日付の流入を防ぐ目的には使えません。また、全件を人手でチェックするのは現実的でもありません。
管理者としての対処手順
- [設定]→[オブジェクトマネージャ]→[商談]を開く
- [入力規則]→[新規]をクリックする
- ルール名を
完了予定日の過去日付を禁止などとし、[有効]にチェックを入れる - エラー条件数式に次を入力する
AND(
ISCHANGED( CloseDate ),
CloseDate < TODAY()
)
- エラーメッセージに
完了予定日には今日以降の日付を入力してください。と入力する - エラーメッセージの表示場所を[項目]にし、[完了予定日]を選ぶ
- 保存し、過去日付を入れて保存できないことを確認する
あわせて覚えておきたいポイント
- 既存の古いデータへの配慮が必要です。
ISCHANGED()を併用しないと、すでに完了予定日が過去になっている既存商談のメモを直すだけでもエラーになってしまいます。 - 特定の役職だけ例外にしたい場合は、
$Permission.カスタム権限名や$Profile.Nameを条件に加えます。カスタム権限を使うほうがプロファイル名直書きより保守しやすいです。
出典(Salesforce公式)
- Tips for Writing Validation Rules — 「エラーメッセージには、どういう入力が有効なのかを伝える指示を書く。例:完了予定日は今日より後にしてください」
- Optimize Data Entry with Validation Rules(Trailhead) — 「検証ルールは、ユーザーが入力したデータが、保存前に指定した基準を満たしているかを検証する。数式が True を返した場合、入力されたデータが無効な値を含んでいることを意味する」
- Get Started with Validation Rules(Trailhead) — 「数式が TRUE になると、エラーメッセージがユーザーにデータの修正を促す」