我在salesforce中编写了以下类:
global class ChangeImmo implements Schedulable{
// Execute method
global void execute(SchedulableContext SC) {
List<Realty_User__c> rs = [SELECT Buttons__c FROM Realty_User__c WHERE not (Buttons__c INCLUDES ('Terminplaner'))];
for(Realty_User__c r : rs){
r.Buttons__c += ';Terminplaner';
update r;
}
}
}
然后我把它打了一次。
它适用于我们的测试盒,但不适用于实时版本。我们有1700个用户,其中大约730个没有“终端平台”。有人知道,为什么这不起作用?
编辑:我使用SalesForce的DML异常指南调整了我的代码,但它仍然无效:
global class ChangeImmo implements Schedulable {
// Execute method
global void execute(SchedulableContext SC) {
for (List < Realty_User__c > lstRu: [SELECT Buttons__c FROM Realty_User__c WHERE not(Buttons__c INCLUDES('Terminplaner'))]) {
for (Realty_User__c r : lstRu) {
r.Buttons__c += ';Terminplaner';
}
update lstRu;
}
}
}
编辑2:好的,我现在找到了调试日志,错误说明了:
17:00:14.574(10574150113)| FATAL_ERROR | System.ListException:列表中的重复ID:003b000000ZAhDgAAL
答案 0 :(得分:1)
003 - 它是Contact对象的前缀。在更新Realty_User__c对象后,您的生产中看起来有一些与触点一起使用的触发器。
答案 1 :(得分:0)
global class ChangeImmo implements Schedulable{
//执行方法
global void execute(SchedulableContext SC) {
List<Realty_User__c> rs = [SELECT Buttons__c FROM Realty_User__c WHERE not (Buttons__c INCLUDES ('Terminplaner'))];
for(Realty_User__c r : rs){
**r.Buttons__c += ';Terminplaner';**
update r;
}
}
}
似乎您没有更新值。
例如:r.Buttons__c += 'value1;value2;Terminplaner';
update r;