Программная реализация бизнес-процесса Договора

Предлагается следующий алгоритм:

1. Определение исполнителей задач (адресация бизнес-процесов);

2. Формирование Задачи. Структура задачи одинакова для всех точек действия бизнес-процесса.

3. Создание объекта метаданных бизнес-процесс Договора.

4. Разработка процедур перехода по маршруту бизнес-процесса.

5. Формирование системы контроля за ходом бизнес-процесса, а также системы оповещения.

В ходе реализации поставленной задачи потребуется выполнить действия по изменению структур некоторых документов, разработке дополнительных обработок.

Создание системы адресации бизнес-процессов

Можно выделить два вида адресации:

- Персональная – исполнитель (пользователь) определяется в явном виде.

- Ролевая – исполнитель определяется исходя из назначенных ему ролей или других реквизитов адресации.

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

Создать регистр сведений. Имя регистра – Адресация. Регистр независимый, непериодический. Измерения регистра:

Сотрудник (тип данных – справочник Сотрудники);

Роль исполнителя (тип данных – справочник Должности).

Ресурсов и реквизитов нет.

 

В рассматриваемом примере установлено, что основная адресация будет идти по конкретным сотрудникам. Считаем, что есть два условных сотрудника, которые участвуют в данном бизнес-процессе: Главный, Исполните ль. В справочнике Сотрудники в режиме конфигуратора задать данных сотрудников как предопределенных (вкладка Прочие окна справочника Сотрудники).

 

Для предопределенных сотрудников необходимо создать Параметры сеанса. В дальнейшем при запуске системы пользователю можно поставить необходимый параметр сеанса и определить его для системы адресации бизнес-процесса. Параметры сеанса создаются в общих объектах метаданных.

Создать два параметра сеанса:

Имя – Главный. Тип - СправочникСсылка. Сотрудники.

Имя – Исполнитель. Тип - СправочникСсылка.Сотрудники.

Процедура присвоения параметров сеансов пользователям будет рассмотрена позже.

Дополнение. К данному этапу необходимо создать пользователей системы. Их будет два: Главный, Исполнитель.

 

Разработка Задачи

При продвижении по маршруту бизнес-процесса на каждой точке действия будут создаваться задачи. Можно назвать их пользовательскими заданиями, которые будут выполняться заданными пользователями. Объект задача включает следующие атрибуты:

- Предопределенные: Дата, Номер, Наименование, Выполнена (тип – булево), Бизнес-процесс (ссылка на бизнес-процесс), ТочкаМаршрута (ссылка на точку маршрута бизнес-процесса).

- Пользовательские: любые реквизиты, необходимые для идентификации и контроля для задачами.

В рассматриваемом примере структура задач для всех точек действия бизнес-процесса будет одинакова.

Создание задачи для бизнес-процесса:

1. Создать задачу. Имя – ЗадачаДляДоговора.

2. На вкладке Адресация (см. Рис. 10) в одноименном списке выбрать регистр сведений Адресация.

Текущий исполнитель – параметр сеанса Главный.

Задать реквизиты адресации: Сотрудник, Роль исполнителя (тип – справочник должности).

Рис. 10

В списке Основной реквизит адресации установить реквизит Сотрудник.

3. На вкладке Данные задать реквизиты:

Сотрудник (тип – справочник Сотрудник);

Договор (тип – документ Договор).

4. Создать форму списка и форму задачи (см. Рис. 11).

Рис. 11 Форма задачи в режиме конструктора

 

Разработка бизнес-процесса

1. Создать объект конфигурации бизнес-процесс. Имя – Договора. Выбрать задачу для бизнес-процесса – ЗадачаДляДоговора.

2. На вкладке Данные создать реквизиты – Договор (тип данных – документ ДоговорНаОказаниеУслуг), НаличиеКарточки (тип данных – булево).

3. Создать форму бизнес-процесса.

На вкладке Прочие активизировать создание карты маршрута. Карта маршрута представлена на рис.

 

Для каждой точки действия в разделе Адресация (в свойствах точки маршрута) указать сотрудника и (при необходимости) роль исполнителя для бизнес-процесса. Указанный сотрудник является ответственным за выполнение задачи, соответствующий пользователь будет иметь доступ к задаче, а также имеет право запускать процедуры, связанные с точкой действия бизнес-процесса.

Разработка процедур перехода по маршруту бизнес-процесса.

Прежде чем формировать объявленные процедуры, создадим процедуру ПриЗапускеСистемы в общем модуле приложения. Данная процедура запускается каждый раз при запуске системы и инициирует пользователей системы. Кроме того для каждого пользователя задается вывод тех задач, выполнение которых сейчас необходимо в соответствии с картой бизнес-процесса.

Для формирования процедуры необходимо выбрать объект Конфигурация, вызвать контекстное меню, выбрать команду Открыть модуль приложения. В окне модуля сформировать следующую процедуру:

 

Процедура ПриНачалеРаботыСистемы()

   Если ИмяПользователя()="Главный" тогда

       ПараметрыСеанса.Главный=Справочники.Сотрудники.НайтиПоНаименованию("Главный");

       Зад=Задачи.ЗадачаДляДоговора.Выбрать();

       Пока Зад.Следующий() Цикл

                   Если Зад.Выполнена=Ложь тогда

       Зад.ПолучитьОбъект().ПолучитьФорму("ФормаЗадачи").Открыть();

КонецЕсли

КонецЦикла

КонецЕсли

      

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

 

Запуск бизнес-процесса. Формирование задачи Запустить договор в исполнение

Бизнес-процесс Договора запускается в тот момент, когда пользователь устанавливает в поле подписан Договора на оказание услуг значение Истина. В форме документа сформировать процедуру:

Процедура ПодписанПриИзменении(Элемент)

       Если Подписан=Истина тогда

                   БП=БизнесПроцессы.Договора.СоздатьБизнесПроцесс();

                   БП.Дата=ТекущаяДата();

                   БП.Договор=Ссылка;

                   БП.Записать();

                   БП.Старт();

       КонецЕсли

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

 

По данной процедуре создается бизнес-процесс Договора и запускается первая задача

Для пользователя будет удобно, если система его информирует о запуске бизнес-процесса и первой задаче. Для обеспечения указанных условий необходимо сделать следующее:

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

 

Процедура ЗапуститьДоговорВИсполнениеПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, СтандартнаяОбработка)

       Сообщить("Запускается бизне-процесс Договора и первая задача");

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

 

Следующая процедура – ПриСозданииЗадач (активизируется в том же окне свойств). Каждый раз при создании задачи формируются значения некоторых реквизитов, создается соответствующее сообщение. Процедура представлена ниже:

Процедура ЗапуститьДоговорВИсполнениеПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)

       Для каждого Задача из ФормируемыеЗадачи цикл

                  

                   Задача.Договор=Ссылка.Договор;

                  

       КонецЦикла;

        Сообщить("Запущена задача Запустить договор в исполнение");

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

 

Теперь есть смысл запустить приложение. Создать новый договор, установить ему статус Подписано, проверить работу процедур задачи. Также есть смысл открыть список бизнес-процессов и задач, проанализировать данные списка.

 

Завершение задачи Запустить договор в исполнение. Формирование задачи Формирование карточек.

 

Задача проверки запаса завершается как только установлено значение Истина для поля Исполняется. Процедура, сформированная в форме обработки представлена ниже:

Процедура ВыполняетсяПриИзменении(Элемент)

       Если Выполняется=Истина тогда

    ЗП=Задачи.ЗадачаДляДоговора.Выбрать();

                    Пока ЗП.Следующий() Цикл

                               Если ЗП.Наименование="Запустить договор в исполнение" И ЗП.Выполнена=Ложь тогда

                                           Если ЗП.Договор=Ссылка тогда

                                                       Сообщить(ЗП.Наименование);

                                                       ЗП.ПолучитьОбъект().ВыполнитьЗадачу();

                                           КонецЕсли

                               КонецЕсли

                    КонецЦикла

       КонецЕсли

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

 

После завершения автоматически запускается следующая задача. Пользователя необходимо информировать об этом.

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

 

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

       Сообщить("Запускается задача Формирование карточек. Создайте карточки себестоимости");

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

Далее сформировать процедуру ПриСозданииЗадач:

Процедура ФормированиеКарточекПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)

       Для каждого Задача из ФормируемыеЗадачи цикл

                                      Задача.Договор=Ссылка.Договор;

                              КонецЦикла;

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

 

Данная процедура также создает обработку для формирования карточек себестоимости по выбранному договору.

 

Процедура ФормированиеКарточекПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)

       Для каждого Задача из ФормируемыеЗадачи цикл

                                      Задача.Договор=Ссылка.Договор;

                              КонецЦикла;

                              Обр=Обработки.ФормированиеКарточки.Создать();

       Обр.Договор=Ссылка.Договор;

                              Обр.ПолучитьФорму("Форма").Открыть();

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

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: