Я не думаю, что вы можете подавить электронные письма из правил назначения и рабочих процессов с помощью Apex.
Письмо отправлено, потому что это то, что вы указали в правиле назначения (если вы не предоставите шаблон электронной почты, оно не будет отправлено - https://na5.salesforce.com/help/doc/en/creating_assignment_rules.htm (замените na5 на свой экземпляр org).
Но если вы удалите шаблон электронной почты из правила, я думаю, у вас все еще есть несколько вариантов, чтобы справиться с ним:)
Вы можете создать рабочий процесс, который будет отправлять электронную почту при соблюдении критериев:
И (ИЛИ (ISNEW (), ИЗМЕНЕНО (OwnerId)), НЕ («ваши критерии из Apex»))
(вам нужно установить «Запустить это правило, если следующее: формула имеет значение true» в редакторе).
- Вы можете создать триггер «после вставки, после обновления» (с тем же логическим условием), который будет отправлять почту программно. Это довольно легко и есть много примеров.
Если логика, используемая в триггере «до обновления», слишком сложна, чтобы ее можно было покрыть рабочим процессом (например, потому что он охватывает несколько объектов и запросов), и № 1 будет вашим предпочтительным вариантом, вы все равно можете это сделать. Просто используйте какое-то настраиваемое скрытое поле в Lead и установите для него значение «true» в триггере «перед обновлением», а затем проверьте это значение в рабочем процессе.
Конечно, вы также можете полностью отключить правило автоматического назначения, сказать пользователям, что с этого момента флажок будет бесполезен, и использовать полное решение для рабочего процесса / полного запуска, но я думаю, что это слишком агрессивно.