Friday, October 11, 2013
Well I know this is nothing new, I just wanted to jot it down quickly!
Force.com supports triggers @Attachments but as of now you can't create them from standard UI, but hey wait we can create them with the NEW Developer Console. Yes the Developer console(v29.0) is more like Eclipse now and allows you to create a triggers on Attachments.
Force.com supports triggers @Attachments but as of now you can't create them from standard UI, but hey wait we can create them with the NEW Developer Console. Yes the Developer console(v29.0) is more like Eclipse now and allows you to create a triggers on Attachments.
So here is how you can create a trigger @ Attachment
- Click at your Name(left top corner) and Select "Developer Console"

Developer Console Selection - Now when you are inside Developer Console . Go to File >> New >> Apex Trigger

New Apex Trigger - Select "Attachment" in sObject and and give a good Name to your trigger.
Thats it ! you are ready to go!.
Sample Attachment Trigger
Description : Say you want to create a trigger on Attachment which will update a custom field "Last_Attachment_Added_Date__c" on "Account" with the date when the Last Attachment was added.
Prerequisite : "Last_Attachment_Added_Date__c" custom Date/Time field on Account Standard Object.
trigger AttachmentTrigger on Attachment (before insert) {
Boolean isAccountAttachment = FALSE;
List<Account> accounts = new List<Account>();
Set<Id> accIds = new Set<Id>();
for(Attachment att : trigger.New){
/*Check if uploaded attachment is related to Account Attachment and same account is already added*/
if(att.ParentId.getSobjectType() == Account.SobjectType && (!accIds.contains(att.ParentId)){
//prepare a account object for update
accounts.add(
new Account(
Id=:att.ParentId,
Last_Attachment_Added_Date__c = System.today()
)
);
//add the accountid in set to eliminate dupe updates
accIds.add(att.ParentId);
}
}
//finally update accounts
update accounts;
}
The trigger is pretty simple and the trick is in detecting on which object the attachment is being added.
In the above code we are comparing "SobjectType" of the ParentId(for attachment which is added to account SobjectType will be same as of Account Object) and the "Account" to check whether the attachment is added to account.
By using the above code as base you can do many more things like rolling up number of Attachments to its parent object, Some custom validation using trigger on attachment etc.
By using the above code as base you can do many more things like rolling up number of Attachments to its parent object, Some custom validation using trigger on attachment etc.
