Dan*_*ger 15 triggers salesforce apex-code
有没有办法检测插入的记录是否是触发器中克隆操作的结果?
作为托管包的一部分,我想在克隆Opportunity和OpportunityLineItem记录时清除一些自定义字段.
或者是一个触发器不是防止某些字段被克隆的正确位置?
我曾考虑过创建专用代码来调用sObject.Clone()并排除不需要的字段.这似乎不是托管包的理想解决方案,因为它还会排除Opportunity上的任何其他自定义字段.
一种方法,尽管有点类似,就是创建一个新的字段,比如original_id__c,当用记录的salesforce id填空时,它会被工作流(或触发器,取决于你对执行顺序的偏好)填充.对于新记录,此字段将匹配标准salesforce id,而不是克隆记录.关于何时以及如何以及如何填充该字段有许多变化,但关键是给自己一个自己的钩子来区分新的和克隆的记录.
如果您只想控制最终用户的体验(而不是扩展托管包的开发人员),您可以使用自定义页面覆盖标准克隆按钮,该页面使用网址黑客清除字段子集的值.有一些警告,即对于单击克隆按钮的用户,该字段在页面布局上是可编辑和可见的.在撰写本文时,我不相信您可以打包标准按钮覆盖,但列出了可能发生的变化.