День добрый!
Платформа 8.3.17.1851.
Есть проведение документ Реализация, но в подписке на событие "после проведения" или в расширение "после проведения" необходимо создавать и проводить документ Поступление. По ряду причин он может не проводится, тогда с Поступление ничего делать не надо.
Но при попытке проведения Поступления выдаётся Отказ и выпадает исключение, которое влечёт за собой ошибку: "в данной транзакции уже происходили ошибки", после чего даже Реализация не проводится.
Вопрос, есть ли возможность при не проведение Поступления, всё равно проводить Реализацию? метод с транзакциями пробовал.
Процедура ОбработкаПроведения(Отказ, РежимПроведения)// Проведение Реализации
ДокПоступление = ПолучитьДокПоступления();
//НачатьТранзакцию();
Попытка
ДокПоступление.Записать(РежимЗаписиДокумента.Проведение);
//ЗафиксироватьТранзакцию();
Исключение
//ОтменитьТранзакцию();
КонецПопытки;
КонецПроцедуры
(1) в таком виде это не решаемо.
Как вариант, использовать отложенное проведение. Можно создать РС, в который помещать ссылку на документ, который необходимо провести (в данном случае это документ поступления) и периодически (можно регламентным заданием) проверять этот РС. Если есть записи, то пытаться провести нужный документ. Это в общих чертах.
(4) не проверял, потому как для меня вопрос стоит именно с проведениями. Исключение вложенной транзакции должно сыпать и основную, будь то запись или проведение
Отменить вложенную транзакцию не отменяя основную - никак.
Выход: перед проведением поступления нужно на 100% убедиться, что он будет проведен (проверить правильность заполения документа, может потребуются ещё какие-нибудь проверки), и только потом проводить. Если проверка поступления не прошла, то не нужно пытаться его провести.
Другими словами - не допустить возникновения ошибки.