2015-04-03 3 views
0

я написал следующий класс в отдела продаж:Обновление поля multipicklist, не работающего в 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 не имеют «Terminplaner». Кто-нибудь знает, почему это не работает?

Edit: я настроил свой код с гидом по исключениям DML по SalesForce и она до сих пор не работает:

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; 
     } 
    } 
} 

Edit 2: Хорошо, я нашел журнал отладки сейчас и ошибка говорит:

17: 00: 14,574 (10574150113) | FATAL_ERROR | System.ListException: Дублированный идентификатор в списке: 003b000000ZAhDgAAL

ответ

1

003 - это префикс контактного объекта. Похоже, у вас есть триггер в вашей работе, который работает с контактами после обновления объекта Realty_User__c.

+0

Спасибо, но, пожалуйста, взгляните на мое редактирование. –

+0

Не могли бы вы проверить статус запланированных заданий? Если это не удалось - мы сможем найти некоторые детали /apexpages/setup/listAsyncApexJobs.apexp – nickzenko

+0

Подождите, мне нужно настроить полный журнал отладки и посмотреть, что он говорит, прямо сейчас он разрезает соответствующую информацию! –

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;

+0

Эй, это не проблема. Как я уже писал, он работает в песочнице. –

Смежные вопросы