Salesforce 基礎

入力規則とエラーメッセージ

「保存しようとしたらエラーが出る」 — その大半は 入力規則 (Validation Rule) によるものです。データの整合性を保つために、Salesforce ではレコード保存時に 業務上のルール で値をチェックできます。管理者が組織独自ルールを追加することで、誤入力を未然に防げます。

入力規則とは

レコードを保存しようとした時に、条件式で値をチェック し、不適切な値ならエラーメッセージを表示して保存をブロックする機能です。

  • 「葬儀日が通夜日より前」になる入力をブロック
  • 「死亡日が生年月日より前」になる入力をブロック
  • 「金額が 0 円未満」になる入力をブロック
  • 「自分の所属支店以外の発行元」を選択することをブロック

設定方法

Setup → オブジェクトマネージャ → [オブジェクト名] → 入力規則

  1. 「新規」 をクリック
  2. ルール名 (内部用、英数字)
  3. エラー条件式 を入力 (Salesforce 数式言語)
  4. エラーメッセージ を入力 (ユーザーに表示する日本語)
  5. エラー表示位置 を選択 (フィールド単位 / 上部全体)
  6. 保存

エラー条件式の例

例 1: 葬儀日が通夜日より前

ceremonyDate__c < tsuyaDate__c

注: 実際の項目名は組織のカスタムに合わせる。AND OR ISBLANK ISCHANGED などの関数も利用可能。

例 2: 死亡日が生年月日より前

AND(
  NOT(ISBLANK(BirthDate__c)),
  NOT(ISBLANK(DeathDate__c)),
  DeathDate__c < BirthDate__c
)

例 3: 必須項目チェック (条件付き)

AND(
  Status__c = "見積確定",
  ISBLANK(BillingAddress__c)
)

「見積確定にする時は請求先住所を必須」というルール。

エラーメッセージの書き方

ユーザーが理解できる日本語で書くのが大切です。

悪い例

良い例

Error: validation_001 failed

葬儀日は通夜日より後の日付を指定してください

INVALID_VALUE

死亡日は生年月日より後の日付を入力してください

フィールド XX が無効

「請求先住所」を入力してください (見積確定時に必須)

ユーザーが何を直せばいいかが、メッセージから分かることが重要。

ブリッジ葬儀パッケージの入力規則

ブリッジ葬儀パッケージ自体は、ベース部分にいくつかの入力規則を含んでいます (例: 価格タイプの「同カテゴリでデフォルトは 1 つだけ」ルール → PriceTypeDefaultEnforcer)。

組織独自の入力規則は、組織で追加していきます。

組織独自ルールの導入例

ブリッジ葬儀の運用でよくある追加ルール:

1. 喪主は必須

AND(
  RecordType.DeveloperName = "Sougi",
  ISBLANK(Moshu__c)
)

エラーメッセージ: 葬儀施行情報には喪主の指定が必須です

2. 同じ家族に重複お客様

(これは入力規則だけでは難しく、Apex Trigger との併用)

3. 価格 0 円の見積を見積確定にできない

AND(
  Status__c = "見積確定",
  TotalAmount__c <= 0
)

4. 死亡日が将来の日付

AND(
  NOT(ISBLANK(DeathDate__c)),
  DeathDate__c > TODAY()
)

入力規則をユーザーに伝える

入力規則は 画面遷移時には見えない ため、ユーザーが「保存して初めて知る」状態になります。これを避けるには:

  1. エラーメッセージを丁寧に
  2. ユーザーガイドの 「よくあるエラー」セクション に明記
  3. 該当項目を 必須マーク (見た目で分かるよう) にする
  4. オンボーディング時にルールを説明

入力規則の運用ルール

厳しすぎないこと

ルールを増やしすぎると、ユーザーが必要な情報を後で追加できなくなります。例えば、「受電直後は喪主未確定でも保存できる」運用なら、喪主必須ルールは「ステータスが見積確定の時だけ」など条件付きに。

例外対応の運用

業務上、ルールを一時的に外したい場合 (システム移行など):

  • 入力規則を 「無効」に切り替え て一時無効化 (管理者作業)
  • 完了後すぐに「有効」に戻す
  • 影響範囲を Sandbox で先に確認

入力規則の確認 / 検証

新しいルールを追加する時の確認手順:

  1. Sandbox で先に作成 → 動作確認
  2. 既存データに矛盾がないか確認 (SOQL で抽出)
  3. ユーザーへの 事前通知
  4. 本番にデプロイ

エラーメッセージのデバッグ

ユーザーから「エラーが出る」と相談を受けたら:

  1. エラーメッセージ全文 をスクリーンショットで受け取る
  2. メッセージから入力規則 (Validation Rule) を特定
    • Setup → オブジェクトマネージャ → [オブジェクト名] → 入力規則
  3. 条件式を確認 → どの項目が条件に該当しているかを再現
  4. ユーザーに「この項目をこう直せば OK」と案内

こんなときは

パッケージの入力規則を変えたい

→ 直接編集不可。組織独自の入力規則として上書きする方法も推奨されません (パッケージ更新時の衝突)。代わりに、新しいカスタム規則として追加する形で対応。

ユーザーから「エラーで保存できない」と言われた

→ エラーメッセージを正確に取得 → 該当の入力規則を特定 → 対応案内 (上述の「デバッグ」)

一時的に入力規則を外したい

→ 入力規則の編集画面で 「有効」のチェックを外す → 保存 → 作業後に必ず再度有効化

入力規則が機能しない

  • ルールが「無効」になっていないか確認
  • 条件式の構文を再確認 (AND / OR の括弧)
  • データ移行の場合は 入力規則をスキップするオプション がある (Data Loader / API)

入力規則と他の自動処理との関係

入力規則は 保存「直前」 にチェックされる、最後の関門です。

ユーザーが「保存」を押す
      ↓
[1] Trigger (before save) — 値の自動補正
      ↓
[2] 入力規則 (Validation Rule) — エラー判定
      ↓ (合格すれば)
[3] Trigger (after save) — 関連レコード更新
      ↓
[4] Flow (Record-Triggered) — 自動処理

つまり Trigger で自動補正された値も、入力規則のチェック対象。「Trigger で補正される予定でも、入力規則の条件式は補正後の値を見る」 ことに注意。

次に進む


📅 最終更新日: 2026-06-16