Я пытаюсь создать триггер Salesforce на Lead, который автоматически заполняет поле поиска, которое связывает текущий Lead с существующей учетной записью, если существует учетная запись с тем же именем, что и компания Lead's Company поле.Salesforce Trigger, чтобы заполнить поле поиска
Это мой код:
trigger Link_Lead_To_Account on Lead (before insert) {
Set<String> whatIDs = new Set<String>();
MAP<id,String> accountMap= new MAP<id,String>();
// save the leads that have been triggered
for (Lead l : Trigger.new) {
whatIDs.add(l.id);
}
List<Lead> leads = [SELECT Id,Company FROM Lead where ID=:whatIDs ];
// loop through the triggered leads, if the account.name == to lead.company then link the found account to the lead
for (Integer i = 0; i <Trigger.new.size(); i++)
{
// System.Debug('++++++++++++++'+Trigger.new[i].company+Trigger.new[i].id);
if(accountMap.get(Trigger.new[i].company)!=null)
{
for(Account ac :[Select name,id from Account])
{
if(Trigger.new[i].Company==ac.Name)
{
Trigger.new[i].Account__c= ac.id;
break;
}
}
}
// System.Debug('Trigger.new[i].Account__c::::'+Trigger.new[i].Account__c);
// System.Debug('Trigger.new[i].company:::::'+Trigger.new[i].company);
// System.Debug('Trigger.new[i].ID:::::'+Trigger.new[i].ID);
}
update leads;
}
Но это не работает. Он выдает следующее сообщение об ошибке:
Review all error messages below to correct your data.
Apex trigger Link_Lead_To_Account caused an unexpected exception, contact your administrator: Link_Lead_To_Account: execution of AfterInsert caused by: System.StringException: Invalid id: TestAccount2: External entry point
Как это требует поля компании быть ID, но когда я пишу ID это does't выполнения каких-либо изменений.
Почему вам обновление приводит объект ? whatIDs будет пустым все время. Я считаю, что до того, как триггер еще не имеет идентификаторов. –
Что такое TestAccount2? –
testAccount2 - это имя учетной записи, которую я использовал для целей тестирования –