10
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Salesforceの添付ファイルに制限をかける

Posted at

はじめに

(Mac環境の記事ですが、Windows環境も同じ手順になります。環境依存の部分は読み替えてお試しください。)

この記事を最後まで読むと、次のことができるようになります。

  • Salesforceの添付ファイルについて理解する
  • Apexを使って実装する

目的

関連リストに紐づく添付ファイルは、親レコードと参照関係となるため、親レコードの状態に関係なく操作(作成/編集/削除)ができてしまう。例えば、承認プロセスのレコードロック状態においても添付ファイルの更新が可能。ある条件を満たした場合は、添付ファイルの操作を制限したい(入力規則のようなイメージ)。

(後にSalesforce ClassicとLightning Experienceで添付ファイルの保存先が異なることを知り、無理やりLightning Experienceでも動くようにしました。そのためコードは美しくありません。)

アプリの仕様

条件を満たした場合は、添付ファイルの操作(作成/編集/削除)を制限します。

項目名 説明
AVR No. レコードの連番
IsActive アクティブ設定
Memo メモ
SObject 添付ファイルを制限するSObject名
SOQL WHERE Clause 添付ファイルを制限する条件
Excluded Profile 制限を対象外にするプロファイル名
Excluded Public Group 制限を対象外にする公開グループ名
Excluded User 制限を対象外にするユーザ名
Error Message エラーメッセージ

イメージ画像

設定画面
スクリーンショット 2019-03-05 21.13.35.png
制限画面
スクリーンショット 2019-03-05 21.02.34.png

関連する記事

実行環境

環境 Ver.
macOS Mojave 10.14.3
Salesforce Winter '18

ソースコード

実際に実装内容やソースコードを追いながら読むとより理解が深まるかと思います。是非ご活用ください。

GitHub

ポイント

  1. Salesforce ClassicとLightning Experienceでは、添付ファイルの保存先が異なる。Salesforce ClassicはAttachment、Lightning ExperienceはContentDocumentに保存される。

  2. ContentDocumentは親レコードの参照項目をもっていないため、ContentDocumentLinkから参照する。

  3. ContentDocumentLinkContentDocumentの後に作成される。

  4. ContentDocument(Insert)のエラーメッセージ設定は、FinalExceptionが発生するため、InsertはContentDocumentLinkのTriggerイベントで判断し、Update/DeleteはContentDocumentのTriggerイベントで判断する。

  5. (参考) 親レコードのCombinedAttachmentsを参照するとAttachmentContentDocumentの両方がとれる。

    SELECT Id, Name, (SELECT Id, Title FROM CombinedAttachments) FROM Opportunity
    
  6. (参考) AttachmentContentDocumentは種別で見分けができる。添付ファイルはAttachment、ファイルはContentDocumentとなる。

    スクリーンショット 2019-03-05 23.32.17.png

動作検証

添付ファイルを制限する条件を設定する(商談のフェーズがClosed Wonの場合は、添付ファイルの操作を制限する)。

スクリーンショット 2019-03-05 21.13.35.png

レコードを作成および添付ファイルを設定して条件を満たす状態にする(フェーズをClosed Wonに設定する)。

スクリーンショット 2019-03-05 21.01.29.png

添付ファイルを削除する

スクリーンショット 2019-03-05 21.02.34.png
10
15
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?