Я пытаюсь создать триггер, который выполняет следующие действия:
- После создания учетной записи создайте несвязанную запись (называемую записью «Содержимое портала») с тем же именем,предполагая, что по умолчанию RecordTypeId
- взять идентификатор только что созданной записи "Содержимое портала" и вставить ее в поле поиска в первоначально созданной учетной записи
- Добавить идентификатор исходной учетной записи ивведите его в поле только что созданной записи «Содержимое портала»
Шаги 1 и 2 были рассмотрены в сообщении Заполнить поле поиска с записью, созданной из триггера .Новая проблема заключается в том, что при попытке использования элемента 3 в блоке кода Trigger.isAfter
a.Portal_Content_Record__r
возвращает значение NULL, а не значение Id, заполненное после insert p
в блоке Trigger.isBefore
.
trigger newAccountCreated on Account (before insert, after insert) {
List<Account> alist = Trigger.New;
if(Trigger.isBefore){
for(Account a : alist) {
if (a.RecordTypeId == '012i0000001Iy1H') {
Portal_Content__c p = new Portal_Content__c(
Name=a.Name,
RecordTypeId='012i0000001J1zZ'
);
insert p;
a.Portal_Content_Record__c = p.Id;
system.debug('Made it to insert p. P = ' + p.Id +'. a.Portal_Content_Record__c = ' + a.Portal_Content_Record__c);
}
}
}
if (Trigger.isAfter) {
for(Account a : alist){
system.debug('a.Id = ' + a.Id + ', p = ' +a.Portal_Content_Record__r);
String p = a.Portal_Content_Record__c;
for(Portal_Content__c port : [SELECT ID FROM Portal_Content__c WHERE Id = :p]){
port.School_SFDC_ID__c = a.Id;
update port;
}
}
}
}
Мой вопрос состоит из двух частей:
- Как назначить поле во вновь вставленной записи Portal_Content__c с идентификатором учетной записи, которая запустила триггер?
- Можно ли это сделать в этомтриггер или нужен вспомогательный «вспомогательный» триггер?