Есть некий бизнес-процесс, у которого в конце карты маршрута находится точка условия. Если некие условия выполняются, тогда БП завершается, иначе делается переход в его начало. В случае повтора хотелось бы инкрементировать реквизит "ЦиклБП" этого БП. Как это сделать гарантированно и грамотно? В модуле объекта БП в точке условия написал вот что:
Попытка
НачатьТранзакцию();
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("БизнесПроцесс.ВыполнениеЗадания");
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
Если Ссылка.ПроблемаУстранена Тогда
Результат = Истина
Иначе
Результат = Ложь;
БПОбъект = Ссылка.ПолучитьОбъект();
БПОбъект.ПроблемаУстранена = Ложь;
БПОбъект.ПроблемаУстраненаРО = Ложь;
БПОбъект.ЦиклБП = БПОбъект.ЦиклБП + 1;
БПОбъект.Записать()
КонецЕсли;
ЗафиксироватьТранзакцию()
Исключение
Сообщить(ОписаниеОшибки());
ОтменитьТранзакцию()
КонецПопытки
Но что-то терзают смутные сомнения, что как бы тут с транзакциями не наколбасить. Какое ваше мнение?
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан