多选列表字段的更新在 SalesForce 中不起作用?

Update of multipicklist field not working in SalesForce?

我在 salesforce 中写了以下 class:

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 名用户没有 "Terminplaner"。有人知道,为什么这不起作用?

编辑:我根据 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

    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;

003 - 它是联系人对象的前缀。在您更新 Realty_User__c 对象后,您的产品中似乎有一些触发器可以处理联系人。