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