Организация вложенного бизнес-процесса

Внимание! Данный форум является модерируемым.
Для получения к нему доступа необходимо зарегистрироваться или авторизоваться на сайте.

Страницы: 1
RSS
Организация вложенного бизнес-процесса
 
Здравствуйте!

Есть карта маршрута бизнес-процесса, в ней есть этап вложенного бизнес-процесса. Вложенный бизнес-процесс может иметь разные варианты завершения.

Вопрос: Как организовать прохождение по карте маршрута бизнес-проекта после вложенного бизнес-процесса в зависимости от того как он был завершен ?
 
Цитата
Александр Малозёмов пишет:
Вопрос: Как организовать прохождение по карте маршрута бизнес-проекта после вложенного бизнес-процесса в зависимости от того как он был завершен ?

Добрый день.

Можно организовать следующим образом:
допустим, что после точки вложенного БП идет точка условия и в зависимости от того как завершен БП
будет выбран вариант "Да" или "Нет".

Для того, чтобы отрабатывался выбор условия так как нам требуется, следует открыть карту маршрута БП,
дважды кликнуть по точке условия (которя стоит после вложенного БП)  и на закладке "Обработчики событий" для события "Проверка условия" добавить следующий обработчик:

Код
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("БизнесПроцесс",БизнесПроцесс);
Запрос.УстановитьПараметр("ТочкаМаршрута",ВходящаяТочка);

Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
|   ЗадачаИсполнителя.Ссылка,
|   ЗадачаИсполнителя.CRM_Итерация КАК CRM_Итерация
|ПОМЕСТИТЬ Задача
|ИЗ
|   Задача.ЗадачаИсполнителя КАК ЗадачаИсполнителя
|ГДЕ
|   ЗадачаИсполнителя.БизнесПроцесс = &БизнесПроцесс
|   И ЗадачаИсполнителя.CRM_ТочкаМаршрута = &ТочкаМаршрута
|
|УПОРЯДОЧИТЬ ПО
|   CRM_Итерация УБЫВ
|;
|
| 
|ВЫБРАТЬ
|   Задача.Ссылка,
|   CRM_БизнесПроцесс.Ссылка КАК Ссылка1,
|   CRM_БизнесПроцесс.ВариантЗавершения
|ИЗ
|   Задача КАК Задача
|      ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.CRM_БизнесПроцесс КАК CRM_БизнесПроцесс
|      ПО Задача.Ссылка = CRM_БизнесПроцесс.ВедущаяЗадача";

Выборка = Запрос.Выполнить().Выбрать();

Если Выборка.Следующий() Тогда
   Если Выборка.ВариантЗавершения = Справочники.CRM_ВариантыЗавершенияБизнесПроцесса.Успешно Тогда
      ВариантВыполнения = 1;
   Иначе
      ВариантВыполнения = 0;
   КонецЕсли;
КонецЕсли;
Изменено: Кучеров Андрей - 07.05.2013 18:00:07
 
Цитата
Кучеров Андрей пишет:
Цитата
Александр Малозёмов пишет:
Вопрос: Как организовать прохождение по карте маршрута бизнес-проекта после вложенного бизнес-процесса в зависимости от того как он был завершен ?

Добрый день.

Можно организовать следующим образом:
допустим, что после точки вложенного БП идет точка условия и в зависимости от того как завершен БП
будет выбран вариант "Да" или "Нет".

Для того, чтобы отрабатывался выбор условия так как нам требуется, следует открыть карту маршрута БП,
дважды кликнуть по точке условия (которя стоит после вложенного БП)  и на закладке "Обработчики событий" для события "Проверка условия" добавить следующий обработчик:

Код
 Запрос = Новый Запрос;
Запрос.УстановитьПараметр("БизнесПроцесс",БизнесПроцесс);
Запрос.УстановитьПараметр("ТочкаМаршрута",ВходящаяТочка);

Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
|   ЗадачаИсполнителя.Ссылка,
|   ЗадачаИсполнителя.CRM_Итерация КАК CRM_Итерация
|ПОМЕСТИТЬ Задача
|ИЗ
|   Задача.ЗадачаИсполнителя КАК ЗадачаИсполнителя
|ГДЕ
|   ЗадачаИсполнителя.БизнесПроцесс = &БизнесПроцесс
|   И ЗадачаИсполнителя.CRM_ТочкаМаршрута = &ТочкаМаршрута
|
|УПОРЯДОЧИТЬ ПО
|   CRM_Итерация УБЫВ
|;
|
| 
|ВЫБРАТЬ
|   Задача.Ссылка,
|   CRM_БизнесПроцесс.Ссылка КАК Ссылка1,
|   CRM_БизнесПроцесс.ВариантЗавершения
|ИЗ
|   Задача КАК Задача
|      ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.CRM_БизнесПроцесс КАК CRM_БизнесПроцесс
|      ПО Задача.Ссылка = CRM_БизнесПроцесс.ВедущаяЗадача";

Выборка = Запрос.Выполнить().Выбрать();

Если Выборка.Следующий() Тогда
   Если Выборка.ВариантЗавершения = Справочники.CRM_ВариантыЗавершенияБизнесПроцесса.Успешно Тогда
      ВариантВыполнения = 1;
   Иначе
      ВариантВыполнения = 0;
   КонецЕсли;
КонецЕсли;
 

Все понял, большое спасибо.
 
Скажите пожалуйста, что еще доступно в данном контексте ???
Вы написали, "БизнесПроцесс", "ВходящаяТочка".

Я поискал по метаданным конфигурации, думал это реквизиты данного справочника, оказывается нет.
От куда доступны эти переменные ?
 
Цитата
Александр Малозёмов пишет:
От куда доступны эти переменные ?

Если зайти в режиме конфигуратора, то можно посмотреть в Общем модуле "CRM_БизнесПроцессыПереопределяемый", там прописаны функции обработчиков событий точек маршрута, с описанием всех параметров.
 
Цитата
Кучеров Андрей пишет:
Цитата
Александр Малозёмов пишет:
От куда доступны эти переменные ?

Если зайти в режиме конфигуратора, то можно посмотреть в Общем модуле "CRM_БизнесПроцессыПереопределяемый", там прописаны функции обработчиков событий точек маршрута, с описанием всех параметров.

Посмотрел модуль:

Понял то, что можно оперировать параметрами ф-ии данного модуля, однако не понял каким образом они используются в теле функции ?

// Функция вызывается из Функции "CRM_БизнесПроцессыСервер.ПолучитьСледующиеТочкиМаршрута"
// Предназначена для выполнения обработчика "Выбор варианта" переданной точки Выбора варианта
// и возврата индекса варианта, по которому пойдет дальше бизнес-процесс
//
// Параметры:
// ТочкаМаршрута - СправочникСсылка - Точка маршрута, точка Выбора варианта
// ВариантВыполнения - Число - Индекс варианта, переданный результат выполнения предыдущей точки,
// если нет обработчика, то пойдет, по переданному результату.
// Обработчик должен возвращать индекс варианта точки выбора варианта.
//
// Возвращаемое значение:
// Число - Индекс варианта
//
Функция ОбработчикТочкиВыборВарианта(БизнесПроцесс, ВходящаяТочка, ТочкаМаршрута, ЗНАЧ ВариантВыполнения) Экспорт

Если ТипЗнч(БизнесПроцесс) = Тип("СправочникСсылка.CRM_КартыМаршрутов") Тогда
Возврат ВариантВыполнения;
КонецЕсли;
// Получим обработчик текущей точки
Обработчик = ПолучитьОбработчикТочкиМаршрута(ТочкаМаршрута, Справочники.CRM_ОбработчикиСобытийТочекМаршрута.ВыборВарианта);
Если ЗначениеЗаполнено(Обработчик) Тогда
Попытка
Выполнить(Обработчик);
Возврат ВариантВыполнения;
Исключение
ТекстСообщения = НСтр("ru = 'Ошибка выполнения обработчика ""Выбор варианта"" в точке'") + " " + ТочкаМаршрута.Наименование + Символы.ПС + ОписаниеОшибки();
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
Возврат ВариантВыполнения;
КонецПопытки;
Иначе
Возврат ВариантВыполнения;
КонецЕсли;
КонецФункции // ОбработчикТочкиВыборВарианта()

В параметре ф-ии есть "ВходящаяТочка", однако она никак не используется в теле функции
 
Со всем разобрался. Большое спасибо!!!
 
в обработчике написал так:
ВариантВыполнения = 0

это верно ?
 
Цитата
Денис Смирнов пишет:
в обработчике написал так:
ВариантВыполнения = 0

это верно ?

Добрый день.

Да, если Вам требуется, чтобы в точке выбора варианта или условия был указан вариант '0'.
Страницы: 1
Читают тему
Поддержка отраслевых решений «1С-Рарус»
Услуги 1С