Loading
Salesforce から送信されるメールは、承認済ドメインからのみとなります続きを読む

Before Insert イベントまたは Update Case トリガで AccountID が null と表示される

公開日: Aug 26, 2025
説明

※この記事は英語版を翻訳しており、一部機械翻訳を含むため内容は後日更新される可能性があります。最新の内容は英語版を参照してください。表示言語は画面右下の言語名から切り替えられます。

ケースを作成または編集するとき、特定のシナリオで AccountId にアクセスできない場合があります。以下で、再現可能なシナリオとその結果について説明します。
 

1.まず、[ケース] オブジェクトにトリガを作成し、[新規ケース] のリストをループして、その結果を次のようにデバッグログに書き込みます。
trigger DebugCaseValues on Case (before insert, before update) {
    for(Case c : Trigger.new)
        System.debug('##### Case values: ' + c);
}
2.[ケース] ページレイアウトで、[取引先] と [取引先責任者] の項目が [参照のみ] に設定されています。
3.シナリオをテストするために、2 人のユーザーを使用します。つまり、システム管理者と標準ユーザーのプロファイルを持つユーザーを 1 人作成します。
4.両方のユーザーに対してデバッグログを設定し、次を完了します。
5.各ユーザーとしてログインします。[取引先] に移動し、次に [ケース関連リスト] に移動して [新規ケース] をクリックします。
6.必要な項目を入力して [保存] をクリックします。
  • 結果: 両方のユーザーで次のような画面が表示されます。"##### Case values: Case:{Id=null, ..., AccountId=001..."
7.次に [取引先責任者レコード] に移動し、[ケース関連リスト] に移動して [新規ケース] をクリックします。必要な項目を入力して [保存] をクリックします。
  • 結果:
    • システム管理者: "##### Case values: Case:{Id=null, ..., ContactId=003..., AccountId=001..."
    • 標準ユーザー: "##### Case values: Case:{Id=null, ..., ContactId=003..., AccountId=null, ..."


結果では、標準ユーザーの場合、ケース作成時に取引先と取引先責任者の両方が割り当てられているにもかかわらず、Before Insert イベントで AccountId が null を返していることが確認できます。
 

解決策

この結果は、ケース、取引先責任者、取引先のレコード間での関係の実装が複雑であるため、設計どおりに動作していると考えられます。

取引先項目が参照のみ (ページレイアウトあるいは項目レベルのセキュリティによって決定されるため) であることから、AccountId は、渡された取引先レコードを介してデータベースでレビューされています。その結果、AccountId が Apex トリガで null となります。保存されると、実行順で After Trigger イベントの直前に、正しい ID が入力されます。

回避策は次のとおりです。

  • システム管理者以外のユーザーには、ケースオブジェクトの取引先項目を編集可能にします (項目レベルのセキュリティとページレイアウトの両方で)。
  • 取引先ID に基づいて、トリガロジックを After Trigger イベントに移動します。
  • Before Insert トリガで、割り当てられた取引先責任者に関連する AccountId のクエリを行い、それをトリガの Case.AccountId に割り当てます*。

*メモ: この提案は標準的な実装に基づくものです。必要なコードは、ケースオブジェクトの実装によって異なる場合があります。

ナレッジ記事番号

000387008

 
読み込み中
Salesforce Help | Article