Смекни!
smekni.com

Описание функционирования организации (стр. 9 из 12)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

КонецЕсли

КонецЦикла

КонецЕсли

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

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

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

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

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

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

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

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

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

БП.Старт();

КонецЕсли

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

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

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

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

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

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

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

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

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

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

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

КонецЦикла;

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

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

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

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

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

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

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

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

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

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

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

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

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

КонецЕсли

КонецЕсли

КонецЦикла

КонецЕсли

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

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

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

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

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

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

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

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

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

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

КонецЦикла;

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

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

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

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

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

КонецЦикла;

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

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

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

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

Завершение задачи Формирование Карточки

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

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

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

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

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

Если ЗП.Договор=Договор Тогда

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

БП=ЗП.БизнесПроцесс.ПолучитьОбъект();

БП.НаличиеКарточки=Истина;

КонецЕсли

КонецЕсли

КонецЦикла

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

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

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

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

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

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

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

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

КонецЦикла;

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

Завершение задачи Сформировать акт. Формирование задачи Проверить долг.

Задача формирования акта завершается при каждом формировании акта по указанному договору независимо от долга по договору. Акт считается (для системы) вступившим в действие, если он проведен. Процедура завершения данной задачи формируется как дополнение к процедуре ОбработкаПроведения в модуле документа АктОбОказании услуг. Текст дополнения представлен ниже:

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

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

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

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

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

КонецЕсли

КонецЕсли

КонецЦикла

Автоматически запускается следующая задача Проверить долг. Для комфортного выполнения задачи создадим обработку Контроль договора.

1. Сформировать обработку Контроль договора (см. Рис. 12).

Рис. 12 Форма обработки Контроль договора

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

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

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

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

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

КонецЦикла;

Обр=Обработки.КонтрольДоговора.Создать();

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

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

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

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

Процедура КнопкаВыполнитьНажатие(Кнопка)

Запрос=Новый Запрос;

Запрос.Текст=

"ВЫБРАТЬ

| СУММА(ВыполнениеДоговоровОстаткиИОбороты.СуммаКонечныйОстаток) КАК СуммаКонечныйОстаток

|ИЗ

| РегистрНакопления.ВыполнениеДоговоров.ОстаткиИОбороты КАК ВыполнениеДоговоровОстаткиИОбороты