Вы находитесь здесь:
Определение триггеров Apex
Код Apex можно вызвать посредством триггеров. Триггеры Apex можно настроить на выполнение настраиваемых действий до или после изменений записей Salesforce, например, вставок, обновлений или удалений.
Требуемые версии
| Доступно в версиях: Salesforce Classic (недоступно во всех организациях) и Lightning Experience. |
Доступно в версиях: Версии Performance Edition, Unlimited Edition, Developer Edition, Enterprise и Database.com Стандартные объекты, кампании, обращения и сообщения эл. почты недоступны в Database.com. |
| Необходимые полномочия пользователя | |
|---|---|
| Для определения триггеров Apex: | Автор Apex |
Триггеры Apex хранятся в качестве метаданных в приложении под объектом, с которым они связаны.
Добавлять, редактировать или удалять Apex посредством пользовательского интерфейса Salesforce можно только в организации Developer Edition, пробной организации Salesforce Enterprise Edition или организации sandbox. Производственная организация Salesforce позволяет изменять Apex только посредством вызова Metadata API deploy, расширений Salesforce для Visual Studio Code или Ant Migration Tool. Расширения Salesforce для Visual Studio Code и Ant Migration Tool являются бесплатными ресурсами, предоставляемыми Salesforce для поддержки пользователей и партнеров, но не считаются частью наших услуг в соответствии с основным соглашением об обслуживании Salesforce.
- Из параметров управления объектами для объекта, триггеры которого вы хотите открыть, перейдите в раздел «Триггеры». Для стандартных объектов «Вложение», «СодержимоеДокумента» и «Примечание» невозможно создать триггер в пользовательском интерфейсе Salesforce. Для этих объектов создайте триггер посредством инструментов разработки, например, Developer Console или расширения Salesforce для Visual Studio Code. При необходимости воспользуйтесь Metadata API.
- В списке триггеров нажмите «Создать».
-
Чтобы указать версию Apex и API, используемые с этим триггером, нажмите «Параметры версии».
Если в вашей организации установлены управляемые пакеты из AppExchange, можно также указать, какую версию каждого управляемого пакета использовать с этим триггером. Свяжите триггер с последней версией Apex и API, а также с каждым управляемым пакетом, используя значения по умолчанию для всех версий. Чтобы получить доступ к компонентам или функциям, отличающимся от последней версии управляемого пакета, укажите старую версию управляемого пакета.
- Нажмите Триггер Apex и установите флажок «Активно», если хотите скомпилировать и включить триггер. Чтобы сохранить код в метаданных организации, снимите данный флажок. Данный флажок установлен по умолчанию.
-
Введите Apex для триггера в текстовое поле «Текст». Длина одного триггера может составлять не более 1 миллиона символов.
Чтобы определить триггер, воспользуйтесь следующим синтаксисом:
trigger TriggerName on ObjectName (trigger_events) { code_block }где trigger_events может быть разделенным запятыми списком одного или нескольких следующих событий:
-
before insert -
before update -
before delete -
after insert -
after update -
after delete -
after undelete
Примечание- Триггер, вызванный
insert,delete, илиupdateповторяющегося события или повторяющейся задачи, приводит к ошибке выполнения, когда триггер вызывается пакетно из API платформы Lightning. - Например, вы используете триггер последующей вставки или обновления для изменения ответственности за интересы, контакты или возможности. Если вы используете API для изменения ответственности за запись или если пользователь Lightning Experience меняет ответственного за запись, электронное уведомление не отправляется. Чтобы отправить электронные уведомления новому ответственному за запись, задайте свойству
triggerUserEmailв DMLOptions значениеtrue.
-
- Нажмите «Сохранить»
Триггеры хранятся с флагом isValid, установленным на true, если зависимые метаданные не изменились с момента последней компиляции триггера. При внесении изменений в имена или поля объектов, используемые в триггере, включая незначительные изменения (например, редактирование описания объекта или поля), флажок isValid устанавливается на false до повторной обработки кода компилятором Apex. Повторная компиляция выполняется при следующем выполнении триггера или повторном сохранении триггера в метаданных.
Если поле поиска ссылается на удаленную запись, то система Salesforce удаляет значение поля поиска по умолчанию. При необходимости воспрепятствуйте удалению записей, связанных с функцией поиска.
Все классы и триггеры должны быть скомпилированы успешно, и каждый триггер должен иметь определенное покрытие теста. Прежде чем развертывать код в производственных средах, необходимо, чтобы как минимум 75% Apex было покрыто единичными тестами. См. Единичные тесты Apex.
