Метод "НачатьТранзакцию" должен располагаться непосредственно перед оператором "Попытка"
Метод НачатьТранзакцию должен быть за пределами блока Попытка-Исключение непосредственно перед оператором Попытка.
Неправильно:
ПодготовкаДанных();
Попытка
НачатьТранзакцию(); // ошибка
СложнаяФункция();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
Правильно:
ПодготовкаДанных();
НачатьТранзакцию();
Попытка
СложнаяФункция();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
См. также
Экранирование кода
// sonar:BeginTransactionInTryBlock:off
// sonar:BeginTransactionInTryBlock:on