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