Опубликован: 06.12.2011 | Доступ: свободный | Студентов: 3557 / 746 | Оценка: 4.50 / 4.39 | Длительность: 03:42:00
Лекция 6:

Бизнес-процессы

Бизнес-процесс "Поручение"

Создадим новый объект Задача, назовем его ЗадачаДляПоручения, включим в состав подсистемы УчетРаботыМастеров

На закладке Адресация ( рис. 6.32) укажем следующее:

Адресация: выберем регистр сведений Адресация.
Текущий исполнитель: параметр сеанса ТекущийПользователь
В поле Реквизиты адресации добавим реквизит:
Сотрудник: 
  Тип: СправочникСсылка.Сотрудники, 
  Измерение адресации: Сотрудник. 
    Измерение адресации позволяет связать реквизит адресации задачи с 
      соответствующим ему измерением регистра адресации.
  Основной реквизит адресации: Сотрудник. 
    Этот реквизит мы можем выбрать после ввода состава реквизитов адресации 
      задачи.
Настройка адресации задачи ЗадачаДляПоручения

Рис. 6.32. Настройка адресации задачи ЗадачаДляПоручения

Создадим форму списка задачи по вышеописанной технологии – с возможностью показа задач по исполнителям и с возможностью переключения формы на просмотр всех задач.

Создадим бизнес-процесс Поручение, в качестве задачи установим для него задачу ЗадачаДляПоручения, включим его в состав подсистемы УчетРаботыМастеров.

Перейдем на закладку Данные, создадим следующие реквизиты бизнес-процесса ( рис. 6.33):

Исполнитель, Тип: СправочникСсылка.Сотрудники
Контролер, Тип: СправочникСсылка.Сотрудники
НуженПараллельныйКонтроль, Тип: Булево
ОписаниеЗадания, Тип: Строка, длина – 50
РезультатПроверки, Тип: Булево
Настройка реквизитов бизнес-процесса Поручение.

Рис. 6.33. Настройка реквизитов бизнес-процесса Поручение.

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

Создадим карту маршрута бизнес-процесса, рис. 6.34.

Карта маршрута бизнес-процесса Поручение.

увеличить изображение
Рис. 6.34. Карта маршрута бизнес-процесса Поручение.

На карте этого бизнес-процесса мы использовали два новых элемента. Это – точки разделения и слияния. Когда бизнес-процесс доходит до точки разделения, ход его выполнения разветвляется. В нашем случае мы создаем две задачи в точке разделения – в том случае, если при старте бизнес-процесса указано, что требуется параллельный контроль. Ход процесса после прохождения им точки разделения, делится на две точки действия, каждая из которых создает собственные задачи.

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

Создадим точку условия, назовем ее НуженПараллельныйКонтроль, зададим обработчик ПроверкаУсловия:

Процедура НуженПараллельныйКонтрольПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат)
  Результат=НуженПараллельныйКонтроль;
КонецПроцедуры

В этой точке мы принимаем решение о движении по одной из ее ветвей на основе присвоения параметру Результат значения реквизита бизнес-процесса НуженПараллельныйКонтроль. Если реквизит установлен в значение Истина – выполнение бизнес-процесса продолжается по ветви точки условия Да, если ложь – по ветви Нет.

Создадим точку действия, назовем ее ЗаданиеИсполнителю, соединим с ней ветвь Нет точки условия НуженПараллельныйКонтроль. Зададим обработчик ПередСозданиемЗадачи для этой точки:

Процедура ЗаданиеИсполнителюПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, СтандартнаяОбработка)
  СтандартнаяОбработка=Ложь;
  НоваяЗадача=Задачи.ЗадачаДляПоручения.СоздатьЗадачу();
  НоваяЗадача.БизнесПроцесс = Ссылка;
  НоваяЗадача.ТочкаМаршрута 
      = БизнесПроцессы.Поручение.ТочкиМаршрута.ЗаданиеИсполнителю;
  НоваяЗадача.Наименование = "БП4 - исполнителю";
  НоваяЗадача.Дата=ТекущаяДата();
  НоваяЗадача.Сотрудник=Исполнитель;
  НоваяЗадача.Задание="Задание для выполнения:"+ОписаниеЗадания;
  ФормируемыеЗадачи.Добавить(НоваяЗадача);
КонецПроцедуры

Эта процедура формирует задание для исполнителя, указанного при старте бизнес-процесса.

Создадим точку условия, назовем ее НуженКонтроль, соединим с ней выходную линию точки ЗаданиеИсполнителю и зададим обработчик ПроверкаУсловия:

Процедура НуженКонтрольПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат)
  Если Контролер.Пустая() Тогда 
    Результат=Ложь;
  Иначе
    Результат=Истина;
  КонецЕсли;
КонецПроцедуры

Если поле Контролер при старте бизнес-процесса не заполнено, то, очевидно, контроль не нужен – в таком случае мы идем по ветви Нет и попадаем в точку завершения бизнес-процесса (Создадим точку завершения с именем Завершение). В противном случае, идем по ветви Да.

Создадим точку действия ЗаданиеКонтролеру, соединим с ним ветвь Да точки условия НуженКонтроль. Зададим обработчик ПередСозданиемЗадач:

Процедура ЗаданиеКонтролеруПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, СтандартнаяОбработка)
  СтандартнаяОбработка=Ложь;
  НоваяЗадача=Задачи.ЗадачаДляПоручения.СоздатьЗадачу();
  НоваяЗадача.БизнесПроцесс = Ссылка;
  НоваяЗадача.ТочкаМаршрута 
      = БизнесПроцессы.Поручение.ТочкиМаршрута.ЗаданиеКонтролеру;
  НоваяЗадача.Наименование = "БП4 - контролеру, обычный контроль";
  НоваяЗадача.Дата=ТекущаяДата();
  НоваяЗадача.Сотрудник=Контролер;
  НоваяЗадача.Задание="Проконтролируйте задание:"+ОписаниеЗадания
      +", выполненное "+Исполнитель.Наименование;
  ФормируемыеЗадачи.Добавить(НоваяЗадача);
КонецПроцедуры

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

Создадим для точки действия ЗаданиеКонтролеру обработчик ПриВыполнении:

Процедура ЗаданиеКонтролеруПриВыполнении
(ТочкаМаршрутаБизнесПроцесса, Задача, Отказ)
  РезультатПроверки=Задача.РезультатПроверки;
  Записать();
КонецПроцедуры

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

Создадим точку условия КонтрольПройден, соединим с ней выходную линию точки ЗаданиеКонтролеру, напишем следующую процедуру ПроверкаУсловия:

Процедура КонтрольПройденПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат)
  Результат=РезультатПроверки;
КонецПроцедуры

Если реквизит бизнес-процесса РезультатПроверки будет установлен в значение Истина, то есть – проверка выполнения задания пройдена, мы уйдем по ветви Да, которую следует соединить с точкой завершения бизнес-процесса, к завершению.

Если же результат проверки оказался отрицательным, мы уходим по ветви Нет к точке условия НуженПараллельныйКонтроль, в которой, анализируя данные бизнес-процесса, снова приступаем к выдаче задания исполнителю, и, если нужно, контролеру.

На данный момент точка НуженПараллельныйКонтроль не имеет точек, связанных с ее выходом Да. Создадим новую точку разделения, оставим ее имя по умолчанию Разделение1, создадим две точки действия, одну назовем ЗаданиеИсполнителю1, вторую – ЗаданиеКонтролеру1 и присоединим к этим точкам действия выходные линии точки разделения.

Для точки действия ЗаданиеИсполнителю1 зададим следующий обработчик ПередСозданиемЗадач:

Процедура ЗаданиеИсполнителю1ПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, СтандартнаяОбработка)
  СтандартнаяОбработка=Ложь;
  НоваяЗадача=Задачи.ЗадачаДляПоручения.СоздатьЗадачу();
  НоваяЗадача.БизнесПроцесс = Ссылка;
  НоваяЗадача.ТочкаМаршрута 
      = БизнесПроцессы.Поручение.ТочкиМаршрута.ЗаданиеИсполнителю1;
  НоваяЗадача.Наименование = "БП4 - исполнителю, параллельный контроль";
  НоваяЗадача.Дата=ТекущаяДата();
  НоваяЗадача.Сотрудник=Исполнитель;
  НоваяЗадача.Задание="Задание для выполнения: "+ОписаниеЗадания;
  ФормируемыеЗадачи.Добавить(НоваяЗадача)
КонецПроцедуры

Мы создаем задание для исполнителя, указывая в наименовании создаваемой задачи наличие параллельного контроля.

Для точки действия ЗаданиеКонтролеру1 зададим такой код:

Процедура ЗаданиеКонтролеру1ПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, СтандартнаяОбработка)
  СтандартнаяОбработка=Ложь;
  НоваяЗадача=Задачи.ЗадачаДляПоручения.СоздатьЗадачу();
  НоваяЗадача.БизнесПроцесс = Ссылка;
  НоваяЗадача.ТочкаМаршрута 
      = БизнесПроцессы.Поручение.ТочкиМаршрута.ЗаданиеКонтролеру1;
  НоваяЗадача.Наименование = "БП4 - контролеру, параллельный контроль";
  НоваяЗадача.Дата=ТекущаяДата();
  НоваяЗадача.Сотрудник=Контролер;
  НоваяЗадача.Задание="Проконтролируйте задание: "
      +ОписаниеЗадания+", выполняемое "+Исполнитель.Наименование;
  ФормируемыеЗадачи.Добавить(НоваяЗадача);
КонецПроцедуры

Здесь так же мы указываем, что контроль будет выполняться параллельно.

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

&НаКлиенте
Процедура ПередВыполнением(Отказ)
  УстановкаОтметкиОВыполнении()
КонецПроцедуры

&НаСервере
Процедура УстановкаОтметкиОВыполнении()
  Если Объект.ТочкаМаршрута.Имя="ЗаданиеКонтролеру1" Тогда
    ОбъектБП=Объект.БизнесПроцесс.ПолучитьОбъект();
    ОбъектБП.РезультатПроверки=Объект.РезультатПроверки;
    ОбъектБП.Записать();
  КонецЕсли;    
КонецПроцедуры

Здесь мы из процедуры ПередВыполнением вызываем серверную процедуру УстановкаОтметкиОВыполнении(), где, в том случае, если точка маршрута имеет имя "ЗаданиеКонтролеру1" модифицируем параметр РезультатПроверки у бизнес-процесса, сформировавшего задачу. Подобные действия можно выполнить и с помощью других обработчиков, в том числе – в модуле задачи, например, в данном случае мы выбрали ПриЗакрытии().

Когда задачи ЗаданиеКонтролеру1 и ЗаданиеИсполнителю1 будут завершены, будет осуществлен переход от точки слияния к точке КонтрольПройден. Если контроль выполнения задания пройден – мы переходим к завершению бизнес-процесса, в противном случае, как было описано выше, перемещаемся к точке НуженПараллельныйКонтроль, где бизнес-процесс начинает выполняться заново. Так будет происходить до тех пор, пока поручение, заданное при старте бизнес-процесса, не будет выполнено и проконтролировано.

Выводы

В этой лекции мы рассмотрели основные приемы автоматизации бизнес-процессов. В частности, мы научились работать с задачами, бизнес-процессами, системой адресации бизнес-процессов. Рассмотрели различные блоки карт маршрутов бизнес-процессов, в том числе – точки старта, завершения, условия, слияния, разделения.

Константин Павлов
Константин Павлов

Почему в лекции 1 "Основы организации бухгалтерской подсистемы" курса "Разработка прикладных решений для платформы 1С:Предприятие 8.2 в режиме "Управляемое приложение"" совершенно нет информации о том что нужно на вкладке данные в табличной части создать табличную часть "ВидыСубконто" и также нет информации о том какие нужно добавить реквизиты и какие у этих реквизитов должен быть тип? Считаю лекцию 1 в данном вопросе недоработанной.

Надежда Федулкина
Надежда Федулкина