Ошибка «В данной транзакции уже происходили ошибки» означает, что транзакция перешла в некорректное состояние после первого сбоя. Платформа 1С автоматически блокирует все последующие операции в рамках этой транзакции, чтобы предотвратить запись противоречивых или повреждённых данных в базу.
Попытка / Исключение, после которого выполнение продолжается в той же транзакцииПосле первой ошибки платформа помечает транзакцию как «грязную». Любые дальнейшие обращения к базе данных в её рамках автоматически завершаются с этой же ошибкой. Единственный допустимый выход — вызов ОтменитьТранзакцию().
НачатьТранзакцию();
Попытка
// бизнес-логика
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
// логирование ошибки
КонецПопытки;
Ключевой момент — блок Исключение должен всегда содержать ОтменитьТранзакцию(), иначе последующий код продолжит работу в повреждённой транзакции и спровоцирует описанную ошибку.
После появления ошибки «В данной транзакции уже происходили ошибки» ты можешь продолжить выполнение операций в той же транзакции, если правильно обработаешь исключение в блоке Попытка / Исключение.
Новый — ещё не проверен сообществом
Вы