Цель лекции: научиться автоматизировать
В любой организации существуют некие последовательности взаимосвязанных действий, которые выполняют ее сотрудники. Например, менеджер выписывает счет покупателю, правильность этого счета и обоснованность скидок или наценок проверяет руководитель подразделения, после чего работник склада получает распоряжение отгрузить покупателю товары по счету, а работник кассы - принять от покупателя денежные средства.
Еще один пример - сотрудники некоего отдела получают от руководства фирмы поручение составить отчеты по своим участкам деятельности, после составления всех отчетов руководитель отдела получает сообщение о том, что отчеты составлены, получает их, составляет сводный отчет и передает его руководству.
Таких примеров может существовать бесчисленное множество - все зависит от каждой конкретной организации. Часто подобные явления существуют на уровне устных или письменных распоряжений, часто они даже не выделяются в особые структуры, которые принято называть
1С:Предприятие содержит специальные механизмы для реализации
Наша условная организация, в частности, нуждается в автоматизации следующих
В 1С:Предприятие существуют два ключевых, для решения
Объект Бизнес-процесс содержит в себе
Кроме того, для реализации
В реализации механизма
Итак, для того, чтобы заставить механизмы
Начнем решение первой
Создадим новый
(рис 5.1) Параметр сеанса ТекущийПользоваетльТеперь нам нужно записать в этот параметр ссылку на элемент справочника, представляющий собой сотрудника, вошедшего в систему. Для этого нам понадобится написать соответствующий код в модуле сеанса. В частности, ранее мы уже пользовались этим модулем для того, чтобы определить, работает ли с системой пользователь-расчетчик или обычный пользователь. Сейчас в модуле сеанса имеется следующий код:
Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
Сотрудник = Справочники.Сотрудники.НайтиПоРеквизиту("Пользователь", ИмяПользователя());
Если не Сотрудник.Пустая() тогда
ПараметрыСеанса.ПользовательРасчетчик = Сотрудник.Расчетчик;
КонецЕсли;
КонецПроцедуры
Фактически, этот код уже выполняет то, что нам нужно - ищет в справочнике Сотрудники сотрудника, который соответствует пользователю, который вошел в систему.
Добавим в блок Если - КонецЕсли такую строку:
ПараметрыСеанса.ТекущийПользователь=Сотрудник;
Таким образом, мы инициализировали
(рис 5.2) Обновленный код процедуры УстановкаПараметровСеанса
| Сотрудник | Подразделение | Должность |
|---|---|---|
| Васильев П.П. | Администрация | Директор |
| Александров А.А. | Администрация | Администратор |
| Иванов И.И. | Парикмахерская | Мастер |
| Петров П.П. | Парикмахерская | Мастер |
| Расчетчиков А.И. | Бухгалтерия | Расчетчик |
| Бухгалтеров Б.Б. | Бухгалтерия | Бухгалтер |
Вспомним состав нашей текущей конфигурации. В ней отсутствует справочник для хранения информации о должностях - ранее руководство фирмы не предъявляло подобных требований, ограничившись хранением сведений о сотрудниках и о подразделении, где они работают. Но с ростом и развитием фирмы требования изменились, что приводит нас к модификации нашей конфигурации. А именно, сейчас мы создадим новый справочник. Назовем его ). Дополнительных изменений вносить в него не будем - для хранения названия должность нам достаточно наименования элемента справочника длиной 25 символов, которое присутствует в нем по умолчанию.
(рис 5.3) Справочник ДолжностиВнесем в справочник Подразделения следующие предопределенные подразделения:
Ранее в справочнике Подразделения уже присутствовало подразделение Парикмахерская. Если при создании предопределенного элемента будет использован тот же код, что и у существующего элемента, система выдаст предупреждение, но конфигурация будет запущена. Следует привести справочник в состояние с неповторяющимися кодами элементов вручную, заменить ссылки на элементы справочника, созданные в пользовательском режиме, на ссылки на предопределенные элементы (в частности, такие ссылки есть в реквизите Подразделение справочника Сотрудники ), после его удалить непредопределенные элементы.
Предопределенные данные понадобятся нам в дальнейшем, для использования автоматического механизма формирования групповых
Посмотрим на список пользователей, зарегистрированных в системе, рис 5.4. Очевидно, он нуждается в пополнении в соответствии с предоставленным штатным расписанием.
(рис 5.4) Список пользователейНазначим новым пользователям роль .
(рис 5.5) Список пользователей, дополненный в соответствии со штатным расписаниемПозже, в пользовательском режиме работы, мы дополним справочник Сотрудники для того, чтобы внести в него информацию о новых сотрудниках и, в итоге, обеспечить их "узнавание" системой с записью в
Создадим непериодический независимый
(рис 5.6) Регистр сведений АдресацияЭтот регистр должен содержать измерения, по которым планируется адресовать
| Сотрудник: | Тип - СправочникСсылка.Сотрудники, Ведущее |
| Подразделение: | Тип - СправочникСсылка.Подразделения, Ведущее |
| Должность: | Тип - СправочникСсылка.Должности, Ведущее |
(рис 5.7) Настройка состава измерений регистра сведенийТеперь нам нужно запустить систему в пользовательском режиме и заполнить
Но сначала внесем изменения в справочник ). В частности, нас особенно интересует реквизит Пользователь - его содержимое должно соответствовать имени пользователя. При желании вы можете самостоятельно дополнить этот справочник реквизитом Должность с типом СправочникСсылка.Должности - для решения
(рис 5.8) Внесение изменений в справочник СотрудникиЗаполним справочник )- он нам понадобится при заполнении
Внесем в справочник следующие данные:
(рис 5.9) Заполнение справочника ДолжностиЗаполнение
(рис 5.10) Заполнение регистра сведений АдресацияОбратите внимание на то, что от заполнения
Создадим новый объект Задача, назовем его УниверсальнаяЗадача.
Перейдем на вкладку ). Настроим свойства этой вкладки следующим образом:
| Адресация: | выберем |
| Текущий исполнитель: |
В поле Реквизиты адресации добавим следующие реквизиты:
| Сотрудник: | Тип: СправочникСсылка.Сотрудники, Измерение адресации: Сотрудник. Измерение адресации позволяет связать реквизит адресации |
| Подразделение: | Тип: СправочникСсылка.Подразделения, Измерение адресации: Подразделение. |
| Должность: | Тип: СправочникСсылка.Должности, Измерение адресации: Должность. |
Основной реквизит адресации: Сотрудник. Этот реквизит мы можем выбрать после ввода состава реквизитов адресации
(рис 5.11) Заполнение параметров адресации задачи ОбслуживаниеКлиентаПерейдем на вкладку . Этот реквизит мы будем использовать для того, чтобы, при запуске
(рис 5.12) Создание реквизита задачиПерейдем на вкладку .
(рис 5.13) Настройка состава реквизитов формы списка задачиПосле того, как форма списка
Для упрощения процесса тестирования системы добавим на командную панель формы кнопку ОтобразитьВсеЗадачи, которая будет переключать свойство Отображение задач в значение Все задачи, введя в обработчик ее нажатия следующий код:
Процедура ДействияФормыОтобразитьВсеЗадачи(Кнопка) ЭлементыФормы.ЗадачаСписок.ОтображениеЗадач=РежимСпискаЗадач.ВсеЗадачи; КонецПроцедуры
Добавим еще одну кнопку ОтобразитьЗадачиПоИсполнителю, с таким кодом:
Процедура ДействияФормыОтобразитьЗадачиПоИсполнителю(Кнопка) ЭлементыФормы.ЗадачаСписок.ОтображениеЗадач=РежимСпискаЗадач.ПоИсполнителю; КонецПроцедуры
На рис 5.14 вы можете видеть итоговую форму списка
(рис 5.14) Настроенная форма списка задач
Создадим новый объект
(рис 5.15) Начало создания бизнес-процессаЛогика
| Мастер: | Тип: СправочникСсылка.Сотрудники |
| КлиентИПереченьУслуг: | Тип: Строка, Длина: 50 |
| ДатаИВремяЗаказа: | Тип: Дата, Состав даты: Дата и время |
| Бухгалтер: | Тип: СправочникСсылка.Сотрудники |
| СтоимостьУслуг: | Тип: Число, Длина: 10, Точность: 2. |
(рис 5.16) Настройка реквизитов бизнес-процессаТеперь займемся разработкой
(рис 5.17) Начало создания карты маршрута бизнес-процессаКаждый
Следующий элемент схемы - это .
(рис 5.18) Работа над картой маршрута бизнес-процессаПри настройке параметров точки
Для того, чтобы отменить автоматическое создание
Процедура ЗадачаДляМастераПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, СтандартнаяОбработка) СтандартнаяОбработка=Ложь; НоваяЗадача=Задачи.УниверсальнаяЗадача.СоздатьЗадачу(); НоваяЗадача.БизнесПроцесс = Ссылка; НоваяЗадача.ТочкаМаршрута = БизнесПроцессы.РаботаСКлиентами.ТочкиМаршрута.ЗадачаДляМастера; НоваяЗадача.Наименование = "БП1 - мастеру"; НоваяЗадача.Дата=ТекущаяДата(); НоваяЗадача.Сотрудник=Мастер; НоваяЗадача.Задание="Клиент "+КлиентИПереченьУслуг+" "+ДатаИВремяЗаказа; ФормируемыеЗадачи.Добавить(НоваяЗадача); КонецПроцедуры
Выражение вида НоваяЗадача.Сотрудник=Мастер присваивает реквизиту
Когда завершится обработчик события ПередСозданиемЗадач, можно будет вручную обработать событие ПриСозданииЗадач. Его можно использовать для настройки параметров уже созданных - вручную или автоматически -
Создадим вторую точку действия, назовем ее ЗадачаДляБухгалтера. С ней мы поступим аналогичным образом - добавим новую
Процедура ЗадачаДляБухгалтераПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, СтандартнаяОбработка) СтандартнаяОбработка=Ложь; НоваяЗадача=Задачи.УниверсальнаяЗадача.СоздатьЗадачу(); НоваяЗадача.БизнесПроцесс = Ссылка; НоваяЗадача.ТочкаМаршрута = БизнесПроцессы.РаботаСКлиентами.ТочкиМаршрута.ЗадачаДляБухгалтера; НоваяЗадача.Наименование = "БП1 - бухгалтеру"; НоваяЗадача.Дата=ТекущаяДата(); НоваяЗадача.Сотрудник=Бухгалтер; НоваяЗадача.Задание="Принять у клиента "+КлиентИПереченьУслуг+" "+СтоимостьУслуги+" рублей"; ФормируемыеЗадачи.Добавить(НоваяЗадача); КонецПроцедуры
После завершения работы с точкой .
(рис 5.19) Карта маршрута бизнес-процессаПосле реализации логики
(рис 5.20) Карта маршрута бизнес-процессаНа автоматически созданную форму
Процедура ПриОткрытии() ЭлементыФормы.КартаМаршрута.УстановитьСхему(ПолучитьКартуМаршрута()); КонецПроцедуры
Теперь настало время проверить наш
Войдем в систему под учетной записью .
(рис 5.21) Заполнение параметров нового бизнес-процессаПосле нажатия на кнопку .
(рис 5.22) Старт бизнес-процесса и индикация невыполненной задачиТеперь войдем в систему под учетной записью Иванова, если открыть список его
(рис 5.23) Выполненная задача мастера и продвижение бизнес-процесса по маршрутуПосле того, как бухгалтер выполнит свою
(рис 5.24) Завершенный бизнес-процесс в списке
Выше мы подготовили все необходимое для реализации этого
Создадим новый
Создадим один реквизит
Создадим карту
| Групповая: | включено |
| Подразделение: | Парикмахерская |
| Должность: | Мастер |
Благодаря включению признака .
(рис 5.25) Точка маршрута бизнес-процесса, создающая несколько задачЭта точка действия не продвинет маршрут по карте до тех пор, пока все созданные ей задания не будут выполнены.
Мы предусмотрели реквизит
Процедура ЗаданияДляМастеровПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ) Для каждого Задача из ФормируемыеЗадачи Цикл Задача.Задание=Задание; Задача.Наименование="БП2 - мастеру"; КонецЦикла; КонецПроцедуры
Здесь мы перебираем массив созданных
Создадим вторую точку действия, назовем ее ЗаданиеБухгалтеру. Заполним ее реквизиты следующим образом:
| Должность: | Бухгалтер. |
| Подразделение: | Бухгалтерия. |
Откроем обработчик ПриСозданииЗадач, введем в него такой код:
Процедура ЗаданиеБухгалтеруПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ) Для каждого Задача из ФормируемыеЗадачи Цикл Задача.Задание="Подготовить сводный отчет"; Задача.Наименование="БП2 - бухгалтеру"; КонецЦикла КонецПроцедуры
Теперь создадим третью точку
Процедура ЗадачаДиректоруПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ) Для каждого Задача из ФормируемыеЗадачи Цикл Задача.Задание="Сводный отчет по заданию "+Задание+" готов"; Задача.Наименование="БП2 - директору"; КонецЦикла КонецПроцедуры
Добавим точку завершения
Создадим форму
Проверим механизм на практике (для того, чтобы не подвергать дополнительной настройке роль директора, мы, для упрощения
(рис 5.26) Старт бизнес-процесса и две созданные им задачиЗдесь мы отключили отбор по исполнителю для того, чтобы увидеть все
После того, как мастера подготовят отчеты, задание поступит бухгалтеру. И, наконец, когда бухгалтер справится со своей частью работы, директор получит сообщение о том, что сводный отчет по выданному им заданию готов. Однако если протестировать эту схему, окажется, что мастера и бухгалтер видят свои
(рис 5.27) Дополненный регистр сведенийДля решения этой
| СоставСметы: | Строка, Длина 100. |
| ОбщаяСтоимость: | Число, длина 10, точность 2. |
| СогласованоПриПревышении: | Булево |
Ограничимся этими настройками, рис 5.28.
(рис 5.28) Документ Смета закупки материаловСоздадим новый
Создадим реквизит ).
(рис 5.29) Бизнес-процесс ЗакупкаМатериаловСоздадим форму
(рис 5.30) Форма бизнес-процесса ЗакупкаМатериаловПриступим к созданию
(рис 5.31) Карта маршрута бизнес-процесса ЗакупкаМатериаловНачнем с точки Старт. Добавим соответствующий элемент схемы, но для этого
Процедура СтартПередСтартом(ТочкаМаршрутаБизнесПроцесса, Отказ) Если Смета.Пустая() Тогда СметаОбъект = Документы.СметаЗакупкиМатериалов.СоздатьДокумент(); СметаОбъект.Дата = ТекущаяДата(); СметаОбъект.Записать(); Смета = СметаОбъект.Ссылка; КонецЕсли; Записать(); КонецПроцедуры
Если документ сметы не задан - создаем его программно перед стартом
Нашей первой точкой действия будет точка с именем ) подобная
(рис 5.32) Дополненный регистр АдресацияДля этой точки действия (и для последующих - тоже) настроим обработчик события Обработка интерактивной активации. А именно, добавим в него такой код:
Процедура СоставлениеСметыОбработкаИнтерактивнойАктивации(ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)
Смета.ПолучитьФорму().Открыть();
Сообщить("Составьте, пожалуйста, смету");
СтандартнаяОбработка = Ложь;
КонецПроцедуры
Стандартно, при выполнении двойного щелчка на
Когда один из сотрудников подразделения .
(рис 5.33) Результат двойного щелчка по задаче в спискеВнесение изменений в документ не влияет на выполнение
Добавим на карту точку условия, назовем ее ПроверкаСуммыСметы и зададим такой код вышеуказанному обработчику:
Процедура ПроверкаСуммыСметыПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат) ОбщаяСтоимостьБольшеЗаданной = Ложь; Если Смета.ОбщаяСтоимость>10000 Тогда ОбщаяСтоимостьБольшеЗаданной=Истина; КонецЕсли; Результат=ОбщаяСтоимостьБольшеЗаданной; КонецПроцедуры
Здесь мы инициализировали переменную ОбщаяСтоимостьБольшеЗаданной значением Ложь, проверили условие, и при выполнении условия присваиваем ей значение Истина. После чего записываем значение переменной в Результат.
Если процесс пошел по ветви Нет, то есть, дополнительных согласований не требуется, создается
Процедура ЗаданиеБухгалтеруОбработкаИнтерактивнойАктивации(ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)
Смета.ПолучитьФорму().Открыть();
Сообщить("Выдайте, пожалуйста, денежные средства по смете");
СтандартнаяОбработка = Ложь;
КонецПроцедуры
Подобный обработчик мы уже писали для точки СоставлениеСметы.
Добавим на карту точку завершения
Процедура УспешноеЗавершениеПриЗавершении(ТочкаМаршрутаБизнесПроцесса, Отказ)
Сообщить("Бизнес-процесс успешно завершен, по смете выдано "+Смета.ОбщаяСтоимость+" рублей");
КонецПроцедуры
Вернемся к проверке условия на предельную сумму сметы, проходящую в бухгалтерию без согласования. Если сумма больше 10000, документ отправляется на согласование к директору после перехода по ветви Нет точки условия ПроверкаСуммыСметы. Здесь находится точка действия ЗаданиеДиректору, в параметрах адресации которой указано Должность: Директор, обработчик события Обработка интерактивной активации содержит уже знакомый вам код:
Процедура ЗаданиеДиректоруОбработкаИнтерактивнойАктивации(ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)
Смета.ПолучитьФорму().Открыть();
Сообщить("Общая стоимость материалов по смете превышает 10000. Пожалуйста, утвердите или отклоните смету");
СтандартнаяОбработка = Ложь;
КонецПроцедуры
После того, как директор поработает с документом и зафиксирует факт выполнения
Процедура УтвержденаЛиСметаПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат) Результат=Смета.СогласованоПриПревышении; КонецПроцедуры
Если документ согласован, мы проходим по ветви Да и создаем уже обсужденное задание для бухгалтера. Если документ не согласован, мы приходим к точке окончания, названной ЗавершениеБезУтвержденияСметы, со следующим обработчиком При завершении:
Процедура ЗавершениеБезУтвержденияСметыПриЗавершении(ТочкаМаршрутаБизнесПроцесса, Отказ)
Сообщить("Бизнес-процесс завершен, смета не прошла согласование");
КонецПроцедуры
В данном примере мы оставили на усмотрение системы создание и распределение
В этой лекции мы рассмотрели основные приемы автоматизации
Для данной лекции подготовлен видеоурок.
Цель лекции: научиться автоматизировать
В любой организации существуют некие последовательности взаимосвязанных действий, которые выполняют ее сотрудники. Например, менеджер выписывает счет покупателю, правильность этого счета и обоснованность скидок или наценок проверяет руководитель подразделения, после чего работник склада получает распоряжение отгрузить покупателю товары по счету, а работник кассы - принять от покупателя денежные средства.
Еще один пример - сотрудники некоего отдела получают от руководства фирмы поручение составить отчеты по своим участкам деятельности, после составления всех отчетов руководитель отдела получает сообщение о том, что отчеты составлены, получает их, составляет сводный отчет и передает его руководству.
Таких примеров может существовать бесчисленное множество - все зависит от каждой конкретной организации. Часто подобные явления существуют на уровне устных или письменных распоряжений, часто они даже не выделяются в особые структуры, которые принято называть
1С:Предприятие содержит специальные механизмы для реализации
Наша условная организация, в частности, нуждается в автоматизации следующих
В 1С:Предприятие существуют два ключевых, для решения
Объект Бизнес-процесс содержит в себе
Кроме того, для реализации
В реализации механизма
Итак, для того, чтобы заставить механизмы
Начнем решение первой
Создадим новый
(рис 5.1) Параметр сеанса ТекущийПользоваетльТеперь нам нужно записать в этот параметр ссылку на элемент справочника, представляющий собой сотрудника, вошедшего в систему. Для этого нам понадобится написать соответствующий код в модуле сеанса. В частности, ранее мы уже пользовались этим модулем для того, чтобы определить, работает ли с системой пользователь-расчетчик или обычный пользователь. Сейчас в модуле сеанса имеется следующий код:
Процедура УстановкаПараметровСеанса(ТребуемыеПараметры)
Сотрудник = Справочники.Сотрудники.НайтиПоРеквизиту("Пользователь", ИмяПользователя());
Если не Сотрудник.Пустая() тогда
ПараметрыСеанса.ПользовательРасчетчик = Сотрудник.Расчетчик;
КонецЕсли;
КонецПроцедуры
Фактически, этот код уже выполняет то, что нам нужно - ищет в справочнике Сотрудники сотрудника, который соответствует пользователю, который вошел в систему.
Добавим в блок Если - КонецЕсли такую строку:
ПараметрыСеанса.ТекущийПользователь=Сотрудник;
Таким образом, мы инициализировали
(рис 5.2) Обновленный код процедуры УстановкаПараметровСеанса
| Сотрудник | Подразделение | Должность |
|---|---|---|
| Васильев П.П. | Администрация | Директор |
| Александров А.А. | Администрация | Администратор |
| Иванов И.И. | Парикмахерская | Мастер |
| Петров П.П. | Парикмахерская | Мастер |
| Расчетчиков А.И. | Бухгалтерия | Расчетчик |
| Бухгалтеров Б.Б. | Бухгалтерия | Бухгалтер |
Вспомним состав нашей текущей конфигурации. В ней отсутствует справочник для хранения информации о должностях - ранее руководство фирмы не предъявляло подобных требований, ограничившись хранением сведений о сотрудниках и о подразделении, где они работают. Но с ростом и развитием фирмы требования изменились, что приводит нас к модификации нашей конфигурации. А именно, сейчас мы создадим новый справочник. Назовем его ). Дополнительных изменений вносить в него не будем - для хранения названия должность нам достаточно наименования элемента справочника длиной 25 символов, которое присутствует в нем по умолчанию.
(рис 5.3) Справочник ДолжностиВнесем в справочник Подразделения следующие предопределенные подразделения:
Ранее в справочнике Подразделения уже присутствовало подразделение Парикмахерская. Если при создании предопределенного элемента будет использован тот же код, что и у существующего элемента, система выдаст предупреждение, но конфигурация будет запущена. Следует привести справочник в состояние с неповторяющимися кодами элементов вручную, заменить ссылки на элементы справочника, созданные в пользовательском режиме, на ссылки на предопределенные элементы (в частности, такие ссылки есть в реквизите Подразделение справочника Сотрудники ), после его удалить непредопределенные элементы.
Предопределенные данные понадобятся нам в дальнейшем, для использования автоматического механизма формирования групповых
Посмотрим на список пользователей, зарегистрированных в системе, рис 5.4. Очевидно, он нуждается в пополнении в соответствии с предоставленным штатным расписанием.
(рис 5.4) Список пользователейНазначим новым пользователям роль .
(рис 5.5) Список пользователей, дополненный в соответствии со штатным расписаниемПозже, в пользовательском режиме работы, мы дополним справочник Сотрудники для того, чтобы внести в него информацию о новых сотрудниках и, в итоге, обеспечить их "узнавание" системой с записью в
Создадим непериодический независимый
(рис 5.6) Регистр сведений АдресацияЭтот регистр должен содержать измерения, по которым планируется адресовать
| Сотрудник: | Тип - СправочникСсылка.Сотрудники, Ведущее |
| Подразделение: | Тип - СправочникСсылка.Подразделения, Ведущее |
| Должность: | Тип - СправочникСсылка.Должности, Ведущее |
(рис 5.7) Настройка состава измерений регистра сведенийТеперь нам нужно запустить систему в пользовательском режиме и заполнить
Но сначала внесем изменения в справочник ). В частности, нас особенно интересует реквизит Пользователь - его содержимое должно соответствовать имени пользователя. При желании вы можете самостоятельно дополнить этот справочник реквизитом Должность с типом СправочникСсылка.Должности - для решения
(рис 5.8) Внесение изменений в справочник СотрудникиЗаполним справочник )- он нам понадобится при заполнении
Внесем в справочник следующие данные:
(рис 5.9) Заполнение справочника ДолжностиЗаполнение
(рис 5.10) Заполнение регистра сведений АдресацияОбратите внимание на то, что от заполнения
Создадим новый объект Задача, назовем его УниверсальнаяЗадача.
Перейдем на вкладку ). Настроим свойства этой вкладки следующим образом:
| Адресация: | выберем |
| Текущий исполнитель: |
В поле Реквизиты адресации добавим следующие реквизиты:
| Сотрудник: | Тип: СправочникСсылка.Сотрудники, Измерение адресации: Сотрудник. Измерение адресации позволяет связать реквизит адресации |
| Подразделение: | Тип: СправочникСсылка.Подразделения, Измерение адресации: Подразделение. |
| Должность: | Тип: СправочникСсылка.Должности, Измерение адресации: Должность. |
Основной реквизит адресации: Сотрудник. Этот реквизит мы можем выбрать после ввода состава реквизитов адресации
(рис 5.11) Заполнение параметров адресации задачи ОбслуживаниеКлиентаПерейдем на вкладку . Этот реквизит мы будем использовать для того, чтобы, при запуске
(рис 5.12) Создание реквизита задачиПерейдем на вкладку .
(рис 5.13) Настройка состава реквизитов формы списка задачиПосле того, как форма списка
Для упрощения процесса тестирования системы добавим на командную панель формы кнопку ОтобразитьВсеЗадачи, которая будет переключать свойство Отображение задач в значение Все задачи, введя в обработчик ее нажатия следующий код:
Процедура ДействияФормыОтобразитьВсеЗадачи(Кнопка) ЭлементыФормы.ЗадачаСписок.ОтображениеЗадач=РежимСпискаЗадач.ВсеЗадачи; КонецПроцедуры
Добавим еще одну кнопку ОтобразитьЗадачиПоИсполнителю, с таким кодом:
Процедура ДействияФормыОтобразитьЗадачиПоИсполнителю(Кнопка) ЭлементыФормы.ЗадачаСписок.ОтображениеЗадач=РежимСпискаЗадач.ПоИсполнителю; КонецПроцедуры
На рис 5.14 вы можете видеть итоговую форму списка
(рис 5.14) Настроенная форма списка задач
Создадим новый объект
(рис 5.15) Начало создания бизнес-процессаЛогика
| Мастер: | Тип: СправочникСсылка.Сотрудники |
| КлиентИПереченьУслуг: | Тип: Строка, Длина: 50 |
| ДатаИВремяЗаказа: | Тип: Дата, Состав даты: Дата и время |
| Бухгалтер: | Тип: СправочникСсылка.Сотрудники |
| СтоимостьУслуг: | Тип: Число, Длина: 10, Точность: 2. |
(рис 5.16) Настройка реквизитов бизнес-процессаТеперь займемся разработкой
(рис 5.17) Начало создания карты маршрута бизнес-процессаКаждый
Следующий элемент схемы - это .
(рис 5.18) Работа над картой маршрута бизнес-процессаПри настройке параметров точки
Для того, чтобы отменить автоматическое создание
Процедура ЗадачаДляМастераПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, СтандартнаяОбработка) СтандартнаяОбработка=Ложь; НоваяЗадача=Задачи.УниверсальнаяЗадача.СоздатьЗадачу(); НоваяЗадача.БизнесПроцесс = Ссылка; НоваяЗадача.ТочкаМаршрута = БизнесПроцессы.РаботаСКлиентами.ТочкиМаршрута.ЗадачаДляМастера; НоваяЗадача.Наименование = "БП1 - мастеру"; НоваяЗадача.Дата=ТекущаяДата(); НоваяЗадача.Сотрудник=Мастер; НоваяЗадача.Задание="Клиент "+КлиентИПереченьУслуг+" "+ДатаИВремяЗаказа; ФормируемыеЗадачи.Добавить(НоваяЗадача); КонецПроцедуры
Выражение вида НоваяЗадача.Сотрудник=Мастер присваивает реквизиту
Когда завершится обработчик события ПередСозданиемЗадач, можно будет вручную обработать событие ПриСозданииЗадач. Его можно использовать для настройки параметров уже созданных - вручную или автоматически -
Создадим вторую точку действия, назовем ее ЗадачаДляБухгалтера. С ней мы поступим аналогичным образом - добавим новую
Процедура ЗадачаДляБухгалтераПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, СтандартнаяОбработка) СтандартнаяОбработка=Ложь; НоваяЗадача=Задачи.УниверсальнаяЗадача.СоздатьЗадачу(); НоваяЗадача.БизнесПроцесс = Ссылка; НоваяЗадача.ТочкаМаршрута = БизнесПроцессы.РаботаСКлиентами.ТочкиМаршрута.ЗадачаДляБухгалтера; НоваяЗадача.Наименование = "БП1 - бухгалтеру"; НоваяЗадача.Дата=ТекущаяДата(); НоваяЗадача.Сотрудник=Бухгалтер; НоваяЗадача.Задание="Принять у клиента "+КлиентИПереченьУслуг+" "+СтоимостьУслуги+" рублей"; ФормируемыеЗадачи.Добавить(НоваяЗадача); КонецПроцедуры
После завершения работы с точкой .
(рис 5.19) Карта маршрута бизнес-процессаПосле реализации логики
(рис 5.20) Карта маршрута бизнес-процессаНа автоматически созданную форму
Процедура ПриОткрытии() ЭлементыФормы.КартаМаршрута.УстановитьСхему(ПолучитьКартуМаршрута()); КонецПроцедуры
Теперь настало время проверить наш
Войдем в систему под учетной записью .
(рис 5.21) Заполнение параметров нового бизнес-процессаПосле нажатия на кнопку .
(рис 5.22) Старт бизнес-процесса и индикация невыполненной задачиТеперь войдем в систему под учетной записью Иванова, если открыть список его
(рис 5.23) Выполненная задача мастера и продвижение бизнес-процесса по маршрутуПосле того, как бухгалтер выполнит свою
(рис 5.24) Завершенный бизнес-процесс в списке
Выше мы подготовили все необходимое для реализации этого
Создадим новый
Создадим один реквизит
Создадим карту
| Групповая: | включено |
| Подразделение: | Парикмахерская |
| Должность: | Мастер |
Благодаря включению признака .
(рис 5.25) Точка маршрута бизнес-процесса, создающая несколько задачЭта точка действия не продвинет маршрут по карте до тех пор, пока все созданные ей задания не будут выполнены.
Мы предусмотрели реквизит
Процедура ЗаданияДляМастеровПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ) Для каждого Задача из ФормируемыеЗадачи Цикл Задача.Задание=Задание; Задача.Наименование="БП2 - мастеру"; КонецЦикла; КонецПроцедуры
Здесь мы перебираем массив созданных
Создадим вторую точку действия, назовем ее ЗаданиеБухгалтеру. Заполним ее реквизиты следующим образом:
| Должность: | Бухгалтер. |
| Подразделение: | Бухгалтерия. |
Откроем обработчик ПриСозданииЗадач, введем в него такой код:
Процедура ЗаданиеБухгалтеруПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ) Для каждого Задача из ФормируемыеЗадачи Цикл Задача.Задание="Подготовить сводный отчет"; Задача.Наименование="БП2 - бухгалтеру"; КонецЦикла КонецПроцедуры
Теперь создадим третью точку
Процедура ЗадачаДиректоруПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ) Для каждого Задача из ФормируемыеЗадачи Цикл Задача.Задание="Сводный отчет по заданию "+Задание+" готов"; Задача.Наименование="БП2 - директору"; КонецЦикла КонецПроцедуры
Добавим точку завершения
Создадим форму
Проверим механизм на практике (для того, чтобы не подвергать дополнительной настройке роль директора, мы, для упрощения
(рис 5.26) Старт бизнес-процесса и две созданные им задачиЗдесь мы отключили отбор по исполнителю для того, чтобы увидеть все
После того, как мастера подготовят отчеты, задание поступит бухгалтеру. И, наконец, когда бухгалтер справится со своей частью работы, директор получит сообщение о том, что сводный отчет по выданному им заданию готов. Однако если протестировать эту схему, окажется, что мастера и бухгалтер видят свои
(рис 5.27) Дополненный регистр сведенийДля решения этой
| СоставСметы: | Строка, Длина 100. |
| ОбщаяСтоимость: | Число, длина 10, точность 2. |
| СогласованоПриПревышении: | Булево |
Ограничимся этими настройками, рис 5.28.
(рис 5.28) Документ Смета закупки материаловСоздадим новый
Создадим реквизит ).
(рис 5.29) Бизнес-процесс ЗакупкаМатериаловСоздадим форму
(рис 5.30) Форма бизнес-процесса ЗакупкаМатериаловПриступим к созданию
(рис 5.31) Карта маршрута бизнес-процесса ЗакупкаМатериаловНачнем с точки Старт. Добавим соответствующий элемент схемы, но для этого
Процедура СтартПередСтартом(ТочкаМаршрутаБизнесПроцесса, Отказ) Если Смета.Пустая() Тогда СметаОбъект = Документы.СметаЗакупкиМатериалов.СоздатьДокумент(); СметаОбъект.Дата = ТекущаяДата(); СметаОбъект.Записать(); Смета = СметаОбъект.Ссылка; КонецЕсли; Записать(); КонецПроцедуры
Если документ сметы не задан - создаем его программно перед стартом
Нашей первой точкой действия будет точка с именем ) подобная
(рис 5.32) Дополненный регистр АдресацияДля этой точки действия (и для последующих - тоже) настроим обработчик события Обработка интерактивной активации. А именно, добавим в него такой код:
Процедура СоставлениеСметыОбработкаИнтерактивнойАктивации(ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)
Смета.ПолучитьФорму().Открыть();
Сообщить("Составьте, пожалуйста, смету");
СтандартнаяОбработка = Ложь;
КонецПроцедуры
Стандартно, при выполнении двойного щелчка на
Когда один из сотрудников подразделения .
(рис 5.33) Результат двойного щелчка по задаче в спискеВнесение изменений в документ не влияет на выполнение
Добавим на карту точку условия, назовем ее ПроверкаСуммыСметы и зададим такой код вышеуказанному обработчику:
Процедура ПроверкаСуммыСметыПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат) ОбщаяСтоимостьБольшеЗаданной = Ложь; Если Смета.ОбщаяСтоимость>10000 Тогда ОбщаяСтоимостьБольшеЗаданной=Истина; КонецЕсли; Результат=ОбщаяСтоимостьБольшеЗаданной; КонецПроцедуры
Здесь мы инициализировали переменную ОбщаяСтоимостьБольшеЗаданной значением Ложь, проверили условие, и при выполнении условия присваиваем ей значение Истина. После чего записываем значение переменной в Результат.
Если процесс пошел по ветви Нет, то есть, дополнительных согласований не требуется, создается
Процедура ЗаданиеБухгалтеруОбработкаИнтерактивнойАктивации(ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)
Смета.ПолучитьФорму().Открыть();
Сообщить("Выдайте, пожалуйста, денежные средства по смете");
СтандартнаяОбработка = Ложь;
КонецПроцедуры
Подобный обработчик мы уже писали для точки СоставлениеСметы.
Добавим на карту точку завершения
Процедура УспешноеЗавершениеПриЗавершении(ТочкаМаршрутаБизнесПроцесса, Отказ)
Сообщить("Бизнес-процесс успешно завершен, по смете выдано "+Смета.ОбщаяСтоимость+" рублей");
КонецПроцедуры
Вернемся к проверке условия на предельную сумму сметы, проходящую в бухгалтерию без согласования. Если сумма больше 10000, документ отправляется на согласование к директору после перехода по ветви Нет точки условия ПроверкаСуммыСметы. Здесь находится точка действия ЗаданиеДиректору, в параметрах адресации которой указано Должность: Директор, обработчик события Обработка интерактивной активации содержит уже знакомый вам код:
Процедура ЗаданиеДиректоруОбработкаИнтерактивнойАктивации(ТочкаМаршрутаБизнесПроцесса, Задача, СтандартнаяОбработка)
Смета.ПолучитьФорму().Открыть();
Сообщить("Общая стоимость материалов по смете превышает 10000. Пожалуйста, утвердите или отклоните смету");
СтандартнаяОбработка = Ложь;
КонецПроцедуры
После того, как директор поработает с документом и зафиксирует факт выполнения
Процедура УтвержденаЛиСметаПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат) Результат=Смета.СогласованоПриПревышении; КонецПроцедуры
Если документ согласован, мы проходим по ветви Да и создаем уже обсужденное задание для бухгалтера. Если документ не согласован, мы приходим к точке окончания, названной ЗавершениеБезУтвержденияСметы, со следующим обработчиком При завершении:
Процедура ЗавершениеБезУтвержденияСметыПриЗавершении(ТочкаМаршрутаБизнесПроцесса, Отказ)
Сообщить("Бизнес-процесс завершен, смета не прошла согласование");
КонецПроцедуры
В данном примере мы оставили на усмотрение системы создание и распределение
В этой лекции мы рассмотрели основные приемы автоматизации
Для данной лекции подготовлен видеоурок.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.