Решил тут давеча воспользоваться методами insert, update, delete класса Database. Возвращают они одинаковую структуру - SaveResult или DeleteResult. Одного только я не знал (я не мог себе этого представить) метод getId() в классах SaveResult и DeleteResult возвращают null в случае ошибки.
Ну, в случае ошибки с созданием записи я еще могу понять. Но зачем зажимать Id завалившейся записи при обновлении или удаления я не опнимаю.
В чем смысл такой обработки ошибок, если я не могу пользователю сказать, какая запись по какой причине не отработала?
Как обработать частичное сохранение, обновление, удаление записей и получать Id упавших записей?
Решил тут давеча воспользоваться методами insert, update, delete класса Database. Возвращают они одинаковую структуру - SaveResult или DeleteResult. Одного только я не знал (я не мог себе этого представить) метод getId() в классах SaveResult и DeleteResult возвращают null в случае ошибки. Ну, в случае ошибки с созданием записи я еще могу понять. Но зачем зажимать Id завалившейся записи при обновлении или удаления я не опнимаю. В чем смысл такой обработки ошибок, если я не могу пользователю сказать, какая запись по какой причине не отработала? Как обработать частичное сохранение, обновление, удаление записей и получать Id упавших записей?
по индексу в исходном массиве sObjects
по индексу в исходном массиве sObjects
Это если сделать
try {
insert List<Account>;
} catch (DmlException de) {
de.getDmlId(i);
}
Это если сделать [code] try { insert List<Account>; } catch (DmlException de) { de.getDmlId(i); } [/code] Но в этом случае вся транзакция откатывается.
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;
}
[code]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; } [/code]
О! Спасибо!
А я сделал метод, в который передаю только srList и ессесно только из этой информации пытался вытащить Id.
О! Спасибо! А я сделал метод, в который передаю только srList и ессесно только из этой информации пытался вытащить Id.