Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
23 ноя 2024, 10:05

Откат задачи в бизнес процессе

Автор Cezar, 11 окт 2011, 14:58

0 Пользователей и 1 гость просматривают эту тему.

Cezar

Здравствуйте, прошу помощи по такому вот вопросу.

Есть некий бизнес-процесс (1С Документооборот 8), карта маршрута к нему и задачи. Цель состоит в том чтобы дать пользователю возможность вернуть бизнес-процесс к любой уже прошедшей точке маршрута по его выбору. Т.е. фактически сделать аналог возврата по условию например назад.

Как вариант думал удалить все задачи после целевой точки маршрута до текущей (вместе с текущей). Никак. В тоге БП все равно стоит на текущей точке маршрута, а все точки от целевой до текущей становятся обведены в красный квадрат (как будто они в данный момент выполняются).

Или же использовать параметр "ВедушаяЗадача" у БП, присваивая ей целевую. Тоже ничего.

Вариант непосредственно процедуры:

Процедура ПерейтиНаЗадачуБП(БизнесПроцесс, ЦелеваяЗадача) Экспорт
   
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ЗадачаИсполнителя.Ссылка
                   |ИЗ
                   |    Задача.ЗадачаИсполнителя КАК ЗадачаИсполнителя
                   |ГДЕ
                   |    ЗадачаИсполнителя.БизнесПроцесс = &БизнесПроцесс
                   |    И ЗадачаИсполнителя.Дата > &ДатаЦелевойЗадачи
                   |    И ЗадачаИсполнителя.Выполнена = ИСТИНА
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    ЗадачаИсполнителя.Дата";
    Запрос.УстановитьПараметр("БизнесПроцесс", БизнесПроцесс);
    Запрос.УстановитьПараметр("ДатаЦелевойЗадачи", ЦелеваяЗадача.Дата);
   
    ТЗ = Новый ТаблицаЗначений;
    ТЗ = Запрос.Выполнить().Выгрузить();
   
    Для Каждого Задача Из ТЗ Цикл
        ОбъектЗадача = Задача.Ссылка.ПолучитьОбъект();
        ОбъектЗадача.Выполнена = Ложь;
        ОбъектЗадача.Записать();
    КонецЦикла;
   
    //ОбъектБизнесПроцесс = БизнесПроцесс.ПолучитьОбъект();
    //ОбъектБизнесПроцесс.ВедущаяЗадача = ЦелеваяЗадача.Ссылка;
    //ОбъектБизнесПроцесс.Записать();
   
КонецПроцедуры

Cezar

Допустим вот пример выбора пользователем целевой точки 2.6 из точки 2.9. Создает 2.10, и всех их делает красными :(


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск