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

8.2 УП. Бизнес-процесс. Нестандартное создание задач.

Автор VK, 22 мар 2012, 11:33

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

VK

8.2 Управляемое приложение.

Есть простой линейный бизнес процесс состоящий из следующих точек-задач:

старт
1заказ поставщику
2поступление от поставщика
3отгрузка подрядчику
4поступление от подрядчика
финиш

на этапе 1 признаком завершения задачи является заказ всех требуемых товаров указанных в табличной части документа инициатора бизнес-процесса.
Причем документов "заказ поставщику" может быть несколько.
По условию задачи после проведения каждого документа "Заказ поставщику" должна создаваться задача точки 2 бизнес-процесса - "Поступление от поставщика". То есть стандартная обработка создания задачи при входе в точку 2 после выполнения задачи 1 мне не нужна.
Код создания задач после проведения документа "Заказ поставщику":

Процедура ОбработкаПроведения(Отказ, РежимПроведения)


СоздатьЗадачиДляПоступления();

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


Процедура СоздатьЗадачиДляПоступления()
Если Задачи.Задача.НайтиПоРеквизиту("ДокументИсточник", ЭтотОбъект.Ссылка).Пустая() Тогда
Задача = Задачи.Задача.СоздатьЗадачу();
Задача.Дата = ТекущаяДата();
Задача.Наименование = БизнесПроцессы.БизнесПроцессПроизводство.ТочкиМаршрута.ОжиданиеПоступленияОтПодрядчика.НаименованиеЗадачи;
Задача.БизнесПроцесс = БизнесПроцесс;
Задача.Подразделение = Справочники.Подразделения.Склад;
Задача.ТочкаМаршрута = БизнесПроцессы.БизнесПроцессПроизводство.ТочкиМаршрута.ПоступлениеОтПоставщикаОжидание;
Задача.ДокументИсточник = ЭтотОбъект.Ссылка;
Задача.Записать();
Задача.АктивироватьИнтерактивно();
Задача.Записать();
КонецЕсли;
КонецПроцедуры


Для этого в обработке события "Перед созданием задач" точки 2 добавил код

Процедура ПоступлениеОтПоставщикаПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, СтандартнаяОбработка)
СтандартнаяОбработка = ложь;
КонецПроцедуры

Задача после этого не создается, но проблема в том, что бизнес процесс сразу перескакивает на точку 3 и создает задачи для нее, не смотря на то, что имеются невыполненные задачи точки 3. В карте маршрута при этом точки 2 и 3 светятся обе как текущие. Если выполнить точку 3, то процес пойдет дальше, влоть до завершения.
Вопрос - Как бы это обойти, чтобы и задачи вручную наклепать, и чтобы следующая точка пока не выполнялась? 

Dethmontt

Процедура ПоступлениеОтПоставщикаПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, СтандартнаяОбработка)
СтандартнаяОбработка = ложь;
Задача = ФормируемыеЗадачи[0];
Задача.Дата = ТекущаяДата();
Задача.Наименование = БизнесПроцессы.БизнесПроцессПроизводство.ТочкиМаршрута.ОжиданиеПоступленияОтПодрядчика.НаименованиеЗадачи;
Задача.БизнесПроцесс = БизнесПроцесс;
Задача.Подразделение = Справочники.Подразделения.Склад;
Задача.ТочкаМаршрута = БизнесПроцессы.БизнесПроцессПроизводство.ТочкиМаршрута.ПоступлениеОтПоставщикаОжидание;
Задача.ДокументИсточник = ЭтотОбъект.Ссылка;
Задача.Записать();
Задача.АктивироватьИнтерактивно();
Задача.Записать();
КонецПроцедуры
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

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

Рейтинг@Mail.ru

Поиск