Я пытаюсь вызвать правило назначения лидов, когда когда-либо определенные критерии соответствуют триггеру.

Но я получаю следующую ошибку:

выполнение AfterInsert, вызванное: System.DmlException: Ошибка обновления. Первое исключение в строке 0; первая ошибка: MISSING_ARGUMENT, идентификатор не указан в вызове обновления: []:

Может ли кто-нибудь указать мне, где я ошибаюсь? Заранее спасибо. Мой триггер:

trigger LeadAssignment on Lead (After insert,After update) {

    List<Lead> updateLeads = new List<Lead>();

    Lead newLead = new Lead();
    for(Lead l : trigger.new)
    {
        if(l.Status == '01-New' || l.Status == '50-Qualified')
        {
            AssignmentRule AR = new AssignmentRule();
            AR = [select id from AssignmentRule where SobjectType = 'Lead' and Active = true limit 1];

            Database.DMLOptions dmlOpts = new Database.DMLOptions();
            dmlOpts.assignmentRuleHeader.assignmentRuleId= AR.id;
            system.debug('dmlOpts***********'+dmlOpts);

             newLead.setOptions(dmlOpts);
           // updateLeads.add(newLead);

                    }

    }
    update newLead;
    system.debug('updateLeads************'+newLead);

}
0
Vijay Ganji 4 Сен 2019 в 12:20

1 ответ

Лучший ответ

Вы пытаетесь обновить Lead newLead = new Lead(), вы не дали ему идентификатор, поэтому он не знает, кого ему нужно обновить. Вам нужно будет сделать что-то вроде newLead = new Lead(Id=l.id) внутри цикла;

Но в целом, я думаю, вам нужно увеличить объем вашего кода. В настоящее время вы будете обновлять только один лид, и он будет последним лидом в триггере.

0
Dana Griff 4 Сен 2019 в 13:28
Привет Дана Грифф, Не могли бы вы помочь мне с кодом. Я пробовал newLead = new Lead(Id=l.id) внутри цикла, но это не работает.
 – 
siri
4 Сен 2019 в 14:04
Пожалуйста, обновите вопрос, чтобы я мог видеть, что вы сделали
 – 
Dana Griff
5 Сен 2019 в 12:42