bsl-language-server icon indicating copy to clipboard operation
bsl-language-server copied to clipboard

[FP] PairingBrokenTransaction при наличии экранированного ОтменитьТранзакцию() в секции Попытка

Open GladilovDmitry opened this issue 1 year ago • 0 comments

Диагностика

PairingBrokenTransaction / Нарушение парности использования методов "НачатьТранзакцию()" и "ЗафиксироватьТранзакцию()" / "ОтменитьТранзакцию()"

Версия

0.23.1

Описание ложного срабатывания диагностики

При наличии ОтменитьТранзакцию() в секции Попытка, получаем срабатывание диагностики "Метод ОтменитьТранзакцию() должен быть в попытке и первым методом блока исключения". В случае отключения этой диагностики через WrongUseOfRollbackTransactionMethod-off или BSLLS-off получаем срабатывание PairingBrokenTransaction на втором ОтменитьТранзакцию() в секции исключения.

Пример кода

Процедура ЗаписатьДанныеВИБ(Массив)

Для Каждого Значение Из Массив Цикл

    НачатьТранзакцию();

    Попытка
		//... // чтение или запись данных
		ЗаписатьПодчиненныйСправочник();
		Если Не Изменено(Значение) Тогда
			// BSLLS-off
			ОтменитьТранзакцию();
			// BSLLS-on
			Продолжить;
		КонецЕсли;
		Значение.Записать()
        ЗафиксироватьТранзакцию();
    Исключение
        ОтменитьТранзакцию();
		//... // дополнительные действия по обработке исключения
	КонецПопытки;
	
КонецЦикла;

КонецПроцедуры bsl1 bsl3

GladilovDmitry avatar Oct 14 '24 11:10 GladilovDmitry