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

Classic と Lightning における ContentDocument と ContentDocumentLink のトリガー動作

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

レコードに添付されたファイルの削除には、以下の動作が適用されます。
  • Classic では、Salesforce は ContentDocument レコードではなく、関連付けられた ContentDocumentLink レコードのみを削除するため、ContentDocument トリガーは起動しません。
  • Lightning Experience では、ContentDocument レコードと関連する ContentDocumentLink レコードの両方が削除され、設計上、Salesforce は ContentDocument のトリガーのみを起動し、ContentDocumentLink のトリガーは起動しません。
解決策

これは設計どおりの動作であり、以下の手順で確認できます。

1.2 つの「before delete」トリガーを作成します。1 つは ContentDocument オブジェクト、もう 1 つは ContenDocumentLink オブジェクトです。
2.デバッグログで確認できるような「system.debug」ステートメントをそれぞれに配置します。
3.次に、「ファイル」関連リストにある任意のオブジェクトレコードに 2 つのファイルをアップロードします。アップロードが完了したら、[ファイル] タブでアップロードした両方のドキュメントを確認できます。
4.Developer Console で以下のクエリを実行します。
  • SELECT Id, LinkedEntityId, ContentDocumentId FROM ContentDocumentLink WHERE LinkedEntityId=<<Id og the document>>
    • 2 つのレコードが返されます
  • SELECT Id, Title FROM ContentDocument WHERE Id IN (<<First ContentDocumentId from the above query>>,
  • <<Second ContentDocumentId from the above query>>) 
    • 2 行が返されます
5.デバッグログを設定します
6.Classic の場合
アップロードされたファイルの 1 つを削除するには、「ファイル」関連リストにあるドキュメントの横の [削除] リンクをクリックします。
観察:
  • デバッグログを見ると、ContentDocumentLinkTrigger だけが発動し、そのトリガーに存在するデバッグステートメントが表示されていることがわかります。
  • 削除したドキュメントは、[ファイル] タブに表示されます。
  • 上の 2 つのクエリを実行すると、1 つ目のクエリでは 1 行だけが返され、2 つ目のクエリでは 2 行が返されることがわかります。ここでは、ContentDocumentLink のみ削除されます。
7.LIGHTNING:
オブジェクトレコードを開き、2 番目にアップロードされたファイルを削除します。「ファイル」関連リストのドキュメントの横にある [削除] リンクをクリックします。
観察:
  • デバッグログでは、ContentDocumentTrigger だけが起動し、そのトリガーに存在するデバッグステートメントが表示されることがわかります。
  • 削除したドキュメントは、[ファイル] タブからなくなります。
  • 上の 2 つのクエリを実行すると、最初のクエリでは行が返されず、2 番目のクエリ (最初のドキュメントに関連するクエリ) では 1 行が返されることがわかります。ここでは、ContentDocument と ContentDocumentLink の両方が削除されました。
ナレッジ記事番号

000381623

 
読み込み中
Salesforce Help | Article