2013-05-21 34 views
2

我在插入後觸發Salesforce潛在客戶觸發器時遇到問題。潛在客戶的分配規則默認爲,但我需要繞過符合特定條件的潛在客戶的規則。關閉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不能trigger.new或trigger.old操作:Trigger.AssignOwnerToNewLead:133行,第1列」

在此先感謝, 山姆

回答

2

使用這種觸發

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

這之前我試過的代碼,但不起作用。這是否在插入觸發器之前?在插入之前嘗試此操作時出現錯誤:'DML statment無法在trigger.new或trigger.old上操作' – Sam

相關問題