Решил тут давеча воспользоваться методами insert, update, delete класса Database. Возвращают они одинаковую структуру - SaveResult или DeleteResult. Одного только я не знал (я не мог себе этого представить) метод getId() в классах SaveResult и DeleteResult возвращают null в случае ошибки.
Ну, в случае ошибки с созданием записи я еще могу понять. Но зачем зажимать Id завалившейся записи при обновлении или удаления я не опнимаю.
В чем смысл такой обработки ошибок, если я не могу пользователю сказать, какая запись по какой причине не отработала?
Как обработать частичное сохранение, обновление, удаление записей и получать Id упавших записей?
по индексу в исходном массиве sObjects
Это если сделать
try {
insert List<Account>;
} catch (DmlException de) {
de.getDmlId(i);
}List<Account> accounts = new List<Account>{a1, a2, ...};Database.SaveResult[] srList = Database.insert(accounts, false);
Integer i = 0;
for (Database.SaveResult sr : srList) {
if (!sr.isSuccess()) {
System.debug(accounts[i]);
System.debug(sr.getErrors());
}
++i;
}
О! Спасибо!
А я сделал метод, в который передаю только srList и ессесно только из этой информации пытался вытащить Id.