Перейти к содержанию

Для вызова НачатьТранзакцию отсутствует парный вызов ОтменитьТранзакцию

При использовании транзакций следует придерживаться следующей схемы обработки исключений в коде на сервере:

НачатьТранзакцию();
Попытка
    Запрос = Новый Запрос("...");
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        ...  
    КонецЦикла;  
    ЗафиксироватьТранзакцию();
Исключение
    ОтменитьТранзакцию();
    ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции'"), УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
    ВызватьИсключение;
КонецПопытки;

Поскольку исключение не отменяет транзакцию сразу, но запрещает успешное завершение транзакции, то все вызовы НачатьТранзакцию, с одной стороны, и ЗафиксироватьТранзакцию или ОтменитьТранзакцию, с другой стороны, должны быть парными.

Экранирование кода

// sonar:PairBeginRollbackTransactionCall:off
// sonar:PairBeginRollbackTransactionCall:on