Apex Trigger-Salesforce перед вставкой
У меня есть два пользовательских объекта: 1. Клиент 2. Жалоба, и они являются отношениями поиска друг с другом.
У меня такая проблема, что ниже триггер не работает. Мое требование таково, что перед тем, как вставить жалобу, сначала он проверит идентификатор электронной почты и контактный номер, а затем жалоба будет зарегистрирована.
trigger Demo on Complaint__c (before insert) {
Set<Id> customerIds = new Set<Id>();
for (Shan__Complaint__c complaint : Trigger.new) {
customerIds.add(complaint.Shan__customer__c);
}
Map<String, Shan__cust__c> customers =
new Map<String, Shan__cust__c>([SELECT Shan__cust_contact__c, Shan__cust_email__c
FROM Shan__cust__c WHERE id IN: customerIds]);
for (Shan__Complaint__c complaint : Trigger.new) {
Shan__cust__c customer = customers.get(complaint.Shan__customer__c);
if (customer == null || complaint.Shan__E_mail__c == customer.Shan__cust_email__c
&& complaint.Shan__Phone_Number__c == customer.Shan__cust_contact__c) {
complaint.adderror('Your phone and Email does not exists in out database ');
}
}
}
1 ответ
Этот триггер не должен быть скомпилирован вообще.
Вы должны увидеть ошибку
Переменная цикла должна иметь тип Complaint__c
Trigger.new
это List<Complaint__c>
Итак, есть 2 ошибки:
for (Shan__Complaint__c complaint : Trigger.new) {
customerIds.add(complaint.Shan__customer__c);
...
for (Shan__Complaint__c complaint : Trigger.new) {
Shan__cust__c customer = customers.get(complaint.Shan__customer__c);
...