Я новичок в apex и создал класс расписания apex, который запускается каждый день. Если у учетной записи есть дата проверки учетной записи для комиссионных через две недели (14 дней), планировщик отправит электронное письмо в наш отдел продаж. В электронном письме содержится ссылка на поток. Поток запускает процесс расчета новой комиссии. Для этого поток должен понимать, что нужно извлекать информацию из учетной записи, которая инициировала отправку электронного письма, учетной записи, для которой дата проверки учетной записи составляет 2 недели.
В настоящее время письмо отправляется нормально со ссылкой на поток. Ссылка на поток работает, но как только вы попадаете в поток, поток не знает / не понимает, из какой учетной записи он должен получать информацию. Я не уверен, нужно ли мне изменять свой код в планировщике и / или код в моем потоке.
Вот как поток получает доступ к информации:
Перед первым экраном происходит поиск записи в потоке. Он извлекает информацию из идентификатора учетной записи и переменной vaAccountID. Я думаю, что переменная {! VaAccountID} заполнена идентификатором AccountID, который связан с комиссией.
Когда я запускаю свой планировщик, он определяет, есть ли учетная запись с датой проверки учетной записи на основе идентификатора учетной записи. Он отправляет шаблон электронного письма со ссылкой на поток в отдел продаж.
Планировщик отправляет электронное письмо и доволен. Критерии, необходимые для выполнения метода, выполнены (есть учетная запись с датой проверки учетной записи через 14 дней, и она отправляет электронное письмо).
global class AccountReviewSchedulerEmailAcc implements Schedulable {
global void execute (SchedulableContext ctx)
{
sendEmail();
}
public void sendEmail()
{
for(Account acc : [SELECT Id FROM Account WHERE Next_Account_Review_Date__c = : system.Today().addDays(14)])
{
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
mail.setTemplateId('00XF0000000LfE0');
mail.setTargetObjectId('005J0000000JWYx');
mail.setSaveAsActivity(false);
Messaging.sendEmail(new Messaging.SingleEmailMessage[] {mail });
}
}
}
Однако поток не «счастливый». Он не знает, из какой учетной записи брать информацию.
На первом экране потока должен отображаться текущий доход и ссылка на страницу аккаунта. Поле периодического дохода пусто. Ссылка на страницу аккаунта не работает.
Если я попытаюсь пройти мимо первого экрана потока, я получаю общий экран ошибки от Salesforce и подробное сообщение об ошибке от Salesforce. Он говорит:
Encountered unhandled fault when running process Organic_Commission_Determination_Flow/301J000000001Tx exception by user/organization: 00DJ00000000YTl/{4} Source organization: 00DA0000000KZI8 (null)
interaction.dal.exception.DALExecutionFault: ; nested exception is:
common.exception.ApiQueryException:
Account.Annual_RR__c FROM Account WHERE (Account.Id = '{!Commission__c.AccountId__c}')
^ ERROR at Row:1:Column:89 invalid ID field: {!Commission__c.AccountId__c} (There was a problem executing your command.) > RETRIEVE
caused by element : Data lookup.Lookup_Account
caused by: interaction.dal.exception.DALExecutionFault: ; nested exception is:
common.exception.ApiQueryException:
Account.Annual_RR__c FROM Account WHERE (Account.Id = '{!Commission__c.AccountId__c}')
^ ERROR at Row:1:Column:89 invalid ID field: {!Commission__c.AccountId__c} (There was a problem executing your command.) > RETRIEVE
Salesforce Error ID: 580775287-15539 (1733087783)
Что означает это сообщение об ошибке? Как я могу получить дополнительную информацию об ошибках Salesforce и способах устранения неполадок в этом вопросе? Я понимаю, что этот процесс очень сложен, но он связан с одним фундаментальным вопросом: как заставить поток понять, что ему нужно извлекать информацию из учетной записи, для которой в моем планировщике вершины была дата проверки через 14 дней?