見出し画像

[Salesforce][Apexコード付き]ファイル添付時にフラグON

お問い合わせ内容

レコードにファイルが添付されているかどうかを知りたい。詳細画面ではなく一覧画面で知りたい。
そんなご要望をいただきました。

今回はApexトリガで実装してみました。

仕組み

レコードに直接ファイルを添付すると、ContentDocumentLinkオブジェクトにファイル(ContentDocument)とレコードのリンク用レコードが登録されます。
また、レコードのフィードかコメントにファイルを添付した場合も同オブジェクトにレコードが登録されますので、Chatter経由のファイル添付でも動作します。

Apexトリガ

以下のコードは行動にファイルを添付された際に、行動のカスタム項目(Attached__c)をONにするコードです。
ファイルが削除された場合は考慮していませんので、厳密に実装するのであればdelete時に添付ファイルが1つも無ければOFFにする処理が必要となります。
テストクラスも必要な方は、コメントください。

trigger ContentDocumentLinkTrigger on ContentDocumentLink (before insert) {
    //リンク先のレコードのIDを取得
    Set ids = new Set();
        for(ContentDocumentLink item : Trigger.new){
        ids.add(item.LinkedEntityId);
    }
    //行動の添付フラグをONにする
    List updList = new List();
    for(Event item : [SELECT Attached__c FROM Event WHERE Attached__c=FALSE AND ID IN :ids]){
        item.Attached__c = TRUE;
        updList.add(item);
    }
    if(!updList.isEmpty()){
        update updList;
    }
}

本記事は以上です。
お役に立ちましたら、本記事を購入お願いします。

ここから先は

0字

¥ 1,000

この記事が気に入ったらサポートをしてみませんか?