Как получить доступ к записям дел, когда они становятся делом.(Email2Case) - PullRequest
0 голосов
/ 29 ноября 2011

Мы настроили этот процесс, чтобы помочь расставить приоритеты в наших делах. Чтобы сделать это, я хочу вызвать новую запись дела после того, как она поступит по электронной почте. Затем запросите, имеет ли это отношение к учетной записи. Если это так, я хочу вернуть значение, cScore. Затем вставьте.

Это то, что я имею до сих пор, это возвращает эту ошибку:

Ошибка: неверные данные. Просмотрите все сообщения об ошибках ниже, чтобы исправить ваши данные. Триггер Apex newCaseScoring вызвал неожиданное исключение, обратитесь к администратору: newCaseScoring: выполнение BeforeInsert вызвано: System.QueryException: список не имеет строк для назначения SObject: Trigger.newCaseScoring: строка 12, столбец 18

Вот мой код:

вызвать newCaseTrigger для Case (перед вставкой) {

if(Trigger.isInsert){
    List<Case> cList = [Select AccountId, Id, Priority_Score__c, Case_Priority_Score__c FROM Case WHERE Id IN :Trigger.new];
    List<Case> updateList = [Select AccountId, Id, Priority_Score__c, Case_Priority_Score__c FROM Case WHERE Id IN :Trigger.new];

    System.debug('This is the cList:' + cList);
    integer size;
    integer cnt=0;
    List<id> idList = New List<id>();
    for(Case cases : cList){

        idList.add(cases.AccountId);
        size = idList.size();
        System.debug('This is the idList:' + idList);
        System.debug('This is the size:' + size);       
        cnt++;
        System.debug(cnt);
    }
    List<Account> aList = [Select Id, Customer_s_Score_Total__c from Account where id =:idList];
    integer num;
    for(Id a : aList){
        for(Id b : idList){
            if(aList.Id == idList){
                num = aList.Customer_s_Score_Total__c;
                updateList.Priority_Score__c = num;
            }
        }
    }
} 

}

Спасибо за помощь.

1 Ответ

5 голосов
/ 29 ноября 2011

Ваш запрос в строке 12 возвращает 0 записей, потому что у Case еще нет идентификатора. Поскольку вы находитесь в триггере before insert, дело еще не завершено.

Я думаю, что вы захотите сделать:

  1. Выполните циклический просмотр дел в Trigger.new и создайте List<Id> значений Case.AccountId.
  2. Сделайте запрос для учетных записей, используя ваш List<Id> из предыдущего шага.
  3. Повторно просматривайте дела, обновляя поле Case_Priority_Score__c.

Вы не должны будете выполнить вызов вставки. Любые изменения, внесенные в записи дел, будут сохранены автоматически, поскольку вы находитесь в триггере before insert.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...