Есть бизнес-процесс с "линейной" картой.

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