【问题标题】:Turn off lead assignment rules in salesforce lead trigger在 Salesforce 潜在客户触发器中关闭潜在客户分配规则
【发布时间】:2013-05-21 10:48:38
【问题描述】:

我在使用 Salesforce 潜在客户触发器时遇到问题,该触发器在插入后触发。潜在客户分配规则需要默认开启,但我需要绕过符合特定条件的潜在客户的规则。

我在 salesforce 文档中看到您可以在插入/更新潜在客户时设置分配规则:http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_methods_system_database_dmloptions.htm#assignmentRuleHeader_section

但是,我无法关闭这些潜在客户分配规则:

...
// if criteria is met to skip assignment rules...
Lead tempobj1 = new Lead(id=objLead.id,OwnerId=ConDomainNameAndOwnerIdMap.get(Emaildomain),isOwnerChanged__c = true);

Database.DMLOptions dmo = new Database.DMLOptions();
dmo.assignmentRuleHeader.useDefaultRule= false; //it's still running assignment rules!
tempobj1.setOptions(dmo);

...
...

update tempobj1;

我还尝试创建一个没有实际规则的新潜在客户分配规则集,并将 DML 选项设置为使用它 - 但仍会触发默认分配规则! dmo.assignmentRuleHeader.assignmentRuleID = '01Qe00000000HAq';

执行顺序表明记录保存到数据库(未提交)> 执行触发器后> 执行分配规则。所以触发器在分配规则之前运行。

我在插入之前尝试过代码,但收到错误“DML statment cannot operation on trigger.new or trigger.old: Trigger.AssignOwnerToNewLead: line 133, column 1”

提前致谢, 山姆

【问题讨论】:

    标签: triggers salesforce apex-code force.com


    【解决方案1】:

    在触发之前使用这个

    for (Lead objLead : Trigger.new) {
            Database.DMLOptions dmo = new Database.DMLOptions();
            dmo.assignmentRuleHeader.useDefaultRule = false;
            objLead.OwnerID = objLead.Eloqua_ID__c;
            objLead.setOptions(dmo);
        }
    }
    

    【讨论】:

    • 这是我尝试过的代码,但不起作用。这是在插入前触发器中吗?在插入之前尝试此操作时出现错误:'DML 语句无法在 trigger.new 或 trigger.old 上运行'
    【解决方案2】:
    • 创建一个没有分配的新潜在客户分配规则,将其命名 作业跳过
    • 在 apex 中以编程方式在规则头选项中设置该 ID

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多