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

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

 

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

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

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

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

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

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

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

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

            

                              КонецЕсли

                   КонецЕсли

       КонецЦикла

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

 

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

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

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

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

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

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

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

КонецЦикла;

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

 

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

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

 

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

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

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

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

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

                   КонецЕсли

       КонецЕсли

       КонецЦикла

 

 

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

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

 

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

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

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

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

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

                  

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

                                                      КонецЦикла;

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

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

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

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

 

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

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

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

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

"ВЫБРАТЬ

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

|ИЗ

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

|ГДЕ

|      ВыполнениеДоговоровОстаткиИОбороты.Договор = &Договор";

Запрос.УстановитьПараметр("Договор",Договор);

Табл=Запрос.Выполнить().Выгрузить();

Для каждого СтрокаТаблицыЗначений из Табл Цикл

       Долг=СтрокаТаблицыЗначений.СуммаКонечныйОстаток;

       Док=Документы.Договор.НайтиПоНомеру(Договор.Номер);

       Объект=Док.ПолучитьОбъект();

       Объект.Долг=СтрокаТаблицыЗначений.СуммаКонечныйОстаток;

Объект.Записать();

       КонецЦикла;

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

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

                   Если ЗП.Наименование="Проверить долг"    тогда

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

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

                              КонецЕсли

                   КонецЕсли

       КонецЦикла

      

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

 

После завершения данной задачи маршрут бизнес-процесса подошел к точке условия. Проверка условия осуществляется по документу договор, ссылка на который установлена в бизнес-процессе (каждый бизнес-процесс соответствует одному договору).

 

 

Для формирования процедуры проверки на карте маршрута бизнес-процесса активизировать точку условия Выполнены обязательства, в разделе события активизировать событие проверка условия. Текст процедуры представлен ниже:

 

Процедура ВыполненыОбязательстваПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат)

       Если Договор.Долг>0 тогда

                   Результат=Ложь

       Иначе

                   Результат=Истина

                   КонецЕсли

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

 

В соответствии с результатом проверки или опять создается задача Сформировать акт (вторая такая задача), или запускается задача Закрыть договор.

Переход на задачу Закрыть договор возможен только тогда, когда долг будет равен нулю. По одному договору может быть сформировано несколько актов (несколько этапов), соответственно и задач Сформировать акт может быть несколько.

 

Для задачи Закрыть договор создать процедуру, открывающую форму закрываемого договора:

 

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

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

                   Задача.Договор=Договор;

       Дог=Документы.Договор.НайтиПоНомеру(Договор.Номер);

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

       КонецЦикла;

      

      

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

 

Завершение задачи Закрыть договор. Завершение бизнес-процесса.

Задача закрытия договора завершается, как только установлено значение Истина для поля Выполнено в форме документа соответствующего договора.

 

Процедура завершения указанной задачи формируется в модуле формы договора:

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

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

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

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

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

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

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

                                          КонецЕсли

                              КонецЕсли

                   КонецЦикла

КонецЕсли

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

 

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

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

Предупреждение("Бизнес-процесс завершен",,"Окончание")

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

 


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



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