Предлагается следующий алгоритм:
1. Определение исполнителей задач (адресация бизнес-процесов);
2. Формирование Задачи. Структура задачи одинакова для всех точек действия бизнес-процесса.
3. Создание объекта метаданных бизнес-процесс Договора.
4. Разработка процедур перехода по маршруту бизнес-процесса.
5. Формирование системы контроля за ходом бизнес-процесса, а также системы оповещения.
В ходе реализации поставленной задачи потребуется выполнить действия по изменению структур некоторых документов, разработке дополнительных обработок.
Создание системы адресации бизнес-процессов
Можно выделить два вида адресации:
- Персональная – исполнитель (пользователь) определяется в явном виде.
- Ролевая – исполнитель определяется исходя из назначенных ему ролей или других реквизитов адресации.
Данные для системы адресации определяются в регистре сведений. Каждое измерение такого регистра определяет определенный разрез адресации. В нашей задаче исполнитель будет назначаться либо в явном виде (конкретный пользователь), либо по должности.
|
|
Создать регистр сведений. Имя регистра – Адресация. Регистр независимый, непериодический. Измерения регистра:
Сотрудник (тип данных – справочник Сотрудники);
Роль исполнителя (тип данных – справочник Должности).
Ресурсов и реквизитов нет.
В рассматриваемом примере установлено, что основная адресация будет идти по конкретным сотрудникам. Считаем, что есть два условных сотрудника, которые участвуют в данном бизнес-процессе: Главный, Исполните ль. В справочнике Сотрудники в режиме конфигуратора задать данных сотрудников как предопределенных (вкладка Прочие окна справочника Сотрудники).
Для предопределенных сотрудников необходимо создать Параметры сеанса. В дальнейшем при запуске системы пользователю можно поставить необходимый параметр сеанса и определить его для системы адресации бизнес-процесса. Параметры сеанса создаются в общих объектах метаданных.
Создать два параметра сеанса:
Имя – Главный. Тип - СправочникСсылка. Сотрудники.
Имя – Исполнитель. Тип - СправочникСсылка.Сотрудники.
Процедура присвоения параметров сеансов пользователям будет рассмотрена позже.
Дополнение. К данному этапу необходимо создать пользователей системы. Их будет два: Главный, Исполнитель.
Разработка Задачи
При продвижении по маршруту бизнес-процесса на каждой точке действия будут создаваться задачи. Можно назвать их пользовательскими заданиями, которые будут выполняться заданными пользователями. Объект задача включает следующие атрибуты:
- Предопределенные: Дата, Номер, Наименование, Выполнена (тип – булево), Бизнес-процесс (ссылка на бизнес-процесс), ТочкаМаршрута (ссылка на точку маршрута бизнес-процесса).
|
|
- Пользовательские: любые реквизиты, необходимые для идентификации и контроля для задачами.
В рассматриваемом примере структура задач для всех точек действия бизнес-процесса будет одинакова.
Создание задачи для бизнес-процесса:
1. Создать задачу. Имя – ЗадачаДляДоговора.
2. На вкладке Адресация (см. Рис. 10) в одноименном списке выбрать регистр сведений Адресация.
Текущий исполнитель – параметр сеанса Главный.
Задать реквизиты адресации: Сотрудник, Роль исполнителя (тип – справочник должности).
Рис. 10
В списке Основной реквизит адресации установить реквизит Сотрудник.
3. На вкладке Данные задать реквизиты:
Сотрудник (тип – справочник Сотрудник);
Договор (тип – документ Договор).
4. Создать форму списка и форму задачи (см. Рис. 11).
Рис. 11 Форма задачи в режиме конструктора
Разработка бизнес-процесса
1. Создать объект конфигурации бизнес-процесс. Имя – Договора. Выбрать задачу для бизнес-процесса – ЗадачаДляДоговора.
2. На вкладке Данные создать реквизиты – Договор (тип данных – документ ДоговорНаОказаниеУслуг), НаличиеКарточки (тип данных – булево).
3. Создать форму бизнес-процесса.
На вкладке Прочие активизировать создание карты маршрута. Карта маршрута представлена на рис.
Для каждой точки действия в разделе Адресация (в свойствах точки маршрута) указать сотрудника и (при необходимости) роль исполнителя для бизнес-процесса. Указанный сотрудник является ответственным за выполнение задачи, соответствующий пользователь будет иметь доступ к задаче, а также имеет право запускать процедуры, связанные с точкой действия бизнес-процесса.
Разработка процедур перехода по маршруту бизнес-процесса.
Прежде чем формировать объявленные процедуры, создадим процедуру ПриЗапускеСистемы в общем модуле приложения. Данная процедура запускается каждый раз при запуске системы и инициирует пользователей системы. Кроме того для каждого пользователя задается вывод тех задач, выполнение которых сейчас необходимо в соответствии с картой бизнес-процесса.
Для формирования процедуры необходимо выбрать объект Конфигурация, вызвать контекстное меню, выбрать команду Открыть модуль приложения. В окне модуля сформировать следующую процедуру:
Процедура ПриНачалеРаботыСистемы()
Если ИмяПользователя()="Главный" тогда
ПараметрыСеанса.Главный=Справочники.Сотрудники.НайтиПоНаименованию("Главный");
Зад=Задачи.ЗадачаДляДоговора.Выбрать();
Пока Зад.Следующий() Цикл
Если Зад.Выполнена=Ложь тогда
Зад.ПолучитьОбъект().ПолучитьФорму("ФормаЗадачи").Открыть();
КонецЕсли
КонецЦикла
КонецЕсли
КонецПроцедуры
Запуск бизнес-процесса. Формирование задачи Запустить договор в исполнение
Бизнес-процесс Договора запускается в тот момент, когда пользователь устанавливает в поле подписан Договора на оказание услуг значение Истина. В форме документа сформировать процедуру:
Процедура ПодписанПриИзменении(Элемент)
Если Подписан=Истина тогда
БП=БизнесПроцессы.Договора.СоздатьБизнесПроцесс();
БП.Дата=ТекущаяДата();
БП.Договор=Ссылка;
БП.Записать();
БП.Старт();
КонецЕсли
КонецПроцедуры
По данной процедуре создается бизнес-процесс Договора и запускается первая задача
Для пользователя будет удобно, если система его информирует о запуске бизнес-процесса и первой задаче. Для обеспечения указанных условий необходимо сделать следующее:
|
|
На карте маршрута бизнес процесса активизировать соответствующую задачу (точку маршрута). В окне свойств точки маршрута, в разделе события активизировать создание процедуры ПередСозданиемЗадач. Сформировать соответствующую процедуру:
Процедура ЗапуститьДоговорВИсполнениеПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, СтандартнаяОбработка)
Сообщить("Запускается бизне-процесс Договора и первая задача");
КонецПроцедуры
Следующая процедура – ПриСозданииЗадач (активизируется в том же окне свойств). Каждый раз при создании задачи формируются значения некоторых реквизитов, создается соответствующее сообщение. Процедура представлена ниже:
Процедура ЗапуститьДоговорВИсполнениеПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)
Для каждого Задача из ФормируемыеЗадачи цикл
Задача.Договор=Ссылка.Договор;
КонецЦикла;
Сообщить("Запущена задача Запустить договор в исполнение");
КонецПроцедуры
Теперь есть смысл запустить приложение. Создать новый договор, установить ему статус Подписано, проверить работу процедур задачи. Также есть смысл открыть список бизнес-процессов и задач, проанализировать данные списка.
Завершение задачи Запустить договор в исполнение. Формирование задачи Формирование карточек.
Задача проверки запаса завершается как только установлено значение Истина для поля Исполняется. Процедура, сформированная в форме обработки представлена ниже:
Процедура ВыполняетсяПриИзменении(Элемент)
Если Выполняется=Истина тогда
ЗП=Задачи.ЗадачаДляДоговора.Выбрать();
Пока ЗП.Следующий() Цикл
Если ЗП.Наименование="Запустить договор в исполнение" И ЗП.Выполнена=Ложь тогда
Если ЗП.Договор=Ссылка тогда
Сообщить(ЗП.Наименование);
|
|
ЗП.ПолучитьОбъект().ВыполнитьЗадачу();
КонецЕсли
КонецЕсли
КонецЦикла
КонецЕсли
КонецПроцедуры
После завершения автоматически запускается следующая задача. Пользователя необходимо информировать об этом.
На карте маршрута бизнес процесса активизировать соответствующую задачу (точку маршрута). В окне свойств точки маршрута, в разделе события активизировать создание процедуры ПередСозданиемЗадач. Сформировать соответствующую процедуру:
Процедура ФормированиеКарточекПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, СтандартнаяОбработка)
Сообщить("Запускается задача Формирование карточек. Создайте карточки себестоимости");
КонецПроцедуры
Далее сформировать процедуру ПриСозданииЗадач:
Процедура ФормированиеКарточекПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)
Для каждого Задача из ФормируемыеЗадачи цикл
Задача.Договор=Ссылка.Договор;
КонецЦикла;
КонецПроцедуры
Данная процедура также создает обработку для формирования карточек себестоимости по выбранному договору.
Процедура ФормированиеКарточекПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)
Для каждого Задача из ФормируемыеЗадачи цикл
Задача.Договор=Ссылка.Договор;
КонецЦикла;
Обр=Обработки.ФормированиеКарточки.Создать();
Обр.Договор=Ссылка.Договор;
Обр.ПолучитьФорму("Форма").Открыть();
КонецПроцедуры