bsl-language-server
bsl-language-server copied to clipboard
[FP] PairingBrokenTransaction при наличии экранированного ОтменитьТранзакцию() в секции Попытка
Диагностика
PairingBrokenTransaction / Нарушение парности использования методов "НачатьТранзакцию()" и "ЗафиксироватьТранзакцию()" / "ОтменитьТранзакцию()"
Версия
0.23.1
Описание ложного срабатывания диагностики
При наличии ОтменитьТранзакцию() в секции Попытка, получаем срабатывание диагностики "Метод ОтменитьТранзакцию() должен быть в попытке и первым методом блока исключения". В случае отключения этой диагностики через WrongUseOfRollbackTransactionMethod-off или BSLLS-off получаем срабатывание PairingBrokenTransaction на втором ОтменитьТранзакцию() в секции исключения.
Пример кода
Процедура ЗаписатьДанныеВИБ(Массив)
Для Каждого Значение Из Массив Цикл
НачатьТранзакцию();
Попытка
//... // чтение или запись данных
ЗаписатьПодчиненныйСправочник();
Если Не Изменено(Значение) Тогда
// BSLLS-off
ОтменитьТранзакцию();
// BSLLS-on
Продолжить;
КонецЕсли;
Значение.Записать()
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
//... // дополнительные действия по обработке исключения
КонецПопытки;
КонецЦикла;
КонецПроцедуры