Практика использования Бизнес-процессов и Задач в «1С:Предприятии 8.3»
С одной стороны, подзадача по реализации бизнес-процессов является обязательной на Аттестации 1С:Специалист по платформе.
С другой стороны, во многих типовых решениях бизнес-процессы используются редко. Хотя фактически бизнес-процессов в конфигурациях автоматизировано множество, а сами эти объекты появились аж в 2004 году (с момента выхода «1С:Предприятие 8.0»).
Поэтому, чтобы понимать работу механизмов «Бизнес-процессов» и «Задач», недостаточно просто «подсмотреть в типовой». Возможности данных объектов нужно именно изучать.
Этим мы и займемся в данной статье. Плюс, дадим общие рекомендации по применению данного механизма в решении реальных задач.
Что такое бизнес-процессы в 1СБезотносительно 1С бизнес-процесс – это совокупность взаимосвязанных действий, направленных на создание продукта или услуги для потребителей.
Примеры бизнес-процессов: производство вентиляторов, допродажа товаров клиента, подбор сотрудников и так далее. Причем часто бизнес-процессы можно детализировать. Например, в производстве продукции можно выделить такие бизнес-процессы, как закупка материалов, передача материалов в производство, движение материалов в производстве, выпуск продукции.
Для наглядной автоматизации бизнес-процессов в платформе «1С:Предприятие 8» существует объект «Бизнес-процесс». Он позволяет выстроить цепочку действий разных пользователей программы, которая приведет к определенному результату. Таким результатом может быть формирование отчетности, утверждение документа, заполнение карточки контрагента.
Объект «Бизнес-процесс» имеет графическое отображение, называемое картой маршрута. Это не что иное, как блок-схема, составленная из «кирпичиков»:
Элемент схемы Графическое представление Описание Точка старта Начало бизнес-процесса, является обязательным Стрелка Показывает последовательность переходов между точками Точка действия Соответствует конкретному действию конкретного пользователя (или одного из пользователей с определенной ролью) в программе. Точка условия Отвечает за проверку выполнения определенного условия, у которого может быть только 2 состояния: “Выполнено” или “Не выполнено” Точка выбора варианта Дает возможность выбрать дальнейшие действия исходя из проверки условия, у которого может быть более двух состояний (аналог – Если-ИначеЕсли-…) Точка разделения Соответствует моменту, начиная с которого разные пользователи должны выполнять разные действия параллельно и независимо друг от друга Точка слияния Соответствует моменту, начиная с которого параллельные процессы вновь объединяются в один Точка обработки Отвечает за выполнение определенного алгоритма системой Точка вложенного бизнес-процесса Соответствует выполнению другого бизнес-процесса, который является составной частью текущегоКак видим, бизнес-процессы в системе могут иметь ветвления, параллельное выполнение, любое количество уровней вложенности.
Вот пример бизнес-процесса «Закрытие месяца» из 1С:УПП, где встречаются практически все возможные элементы:
Продвижение по карте маршрута невозможно реализовать без вспомогательного объекта «Задача» – «двигателя» бизнес-процесса. В каждой точке действия создается одна или несколько задач, и когда все задачи текущей точки завершены, происходит переход к следующей точке карты маршрута.
Использование объектов «Бизнес-процесс» для пользователя похоже на работу с документами:
- Разные бизнес-процессы соответствуют различным действиям в системе (продажа товара, закрытие месяца, согласование заказа, …). То есть объект «Бизнес-процесс» в конфигурации определяет вид операции.
- При старте пользователем нового бизнес-процесса создается несколько экземпляров, например – продажа вентиляторов контрагенту А, продажа холодильников контрагенту Б и так далее. То есть пользователь создает любое количество объектов информационной базы для каждого бизнес-процесса.
Рассмотрим практический пример. Необходимо автоматизировать процесс приема сотрудника на работу из 3 последовательных этапов:
- Младший кадровик заполняет личные данные сотрудника.
- Старший кадровик оформляет приказ о приеме сотрудника в статусе «Проект».
- Расчетчик проводит приказ о приеме в статусе «Утвержден».
Каждый этап бизнес-процесса выполняет отдельный пользователь с нужными правами доступа.
Требуется отслеживать ход приема новых сотрудников, каждый пользователь должен видеть свои задачи.
Бизнес-процесс будем реализовывать в конфигурации, где уже имеются необходимые документы и справочники:
Выгрузку базы с этой конфигурацией можно скачать по ссылке в конце статьи.
Начнем с создания нового бизнес-процесса:
В пользовательском режиме новый бизнес-процесс будет создаваться каждый раз при приеме нового сотрудника.
Изобразим карту маршрута бизнес-процесса для поставленной задачи:
Привязку к исполнителям мы настроим позднее.
В точке условия нужно определить, работал ли принимаемый сотрудник в нашей организации ранее. Если это так, то в базе уже заведен нужный элемент справочника «Физические лица» и заполнены личные данные. Добавим в бизнес-процесс реквизит (тип Булево), который позже обработаем в точке условия (то есть считаем, что пользователь сам определяет при приеме – новый это сотрудник или нет):
Теперь, когда у нас есть схема бизнес-процесса, необходимо организовать последовательность действий и распределение этих действий по ответственным лицам.
Объект конфигурации «Задача»За действие пользователя в каждой точке бизнес-процесса отвечает специальный объект «Задача». Он является вспомогательным объектом, но именно с его помощью выстраивается цепочка действий пользователей: в каждой точке действия карты маршрута создаются задачи для одного или нескольких пользователей. Пока текущий пользователь не завершил свою задачу (то есть не установил стандартный реквизит «Выполнена» в значение «Истина»), задачи следующей точки маршрута для других пользователей созданы не будут.
То есть именно при выполнении задач происходит движение бизнес-процесса по карте маршрута.
Для наглядности рассмотрим, как выглядит список задач в демонстрационной базе конфигурации «Документооборот 8 ПРОФ, редакция 2.1». При запуске программы от имени пользователя Федоров О.П. (директор) на начальной странице открывается список всех невыполненных задач пользователя:
Вернемся к нашей конфигурации, создадим новый объект:
Свяжем бизнес-процесс с задачей:
Более того, в типовых решениях 1С («Документооборот», «Управление торговлей, ред. 11») в разных бизнес-процессах используется один и тот же тип задач, чаще всего он называется «Задача исполнителя». Это делается для того, чтобы пользователь мог видеть общий список своих задач, относящихся к разным видам бизнес-процессов, как в примере выше из «Документооборота».
Адресация задачОбъект «Задача» предоставляет возможность использования вспомогательного регистра сведений, который обеспечивает распределение задач по исполнителям. Этот регистр называется регистром адресации.
Измерениями регистра адресации должны выступать те значения, по которым возможно однозначно определить исполнителя задачи. При этом в качестве одного из измерений чаще всего используется справочник «Пользователи», так как с помощью него удобно связать текущего пользователя программы с его задачами.
Однако использование справочника «Пользователи» как единственного измерения адресации на практике неудобно: например, конкретный пользователь может заболеть или сменить место работы, тогда придется перенастраивать адресацию задач. Таким образом, задачи удобнее привязывать не напрямую к пользователю, а к набору ролей, и одного измерения адресации чаще всего недостаточно.
Поэтому для нашего примера создадим в регистре адресации 2 измерения:
Здесь используется справочник «Роли исполнителей», который имеет следующие предопределенные элементы:
Создадим у задачи реквизиты адресации тех же типов, что и измерения регистра сведений:
Укажем для задачи регистр адресации. Для реквизитов адресации задачи настроим соответствие измерениям выбранного регистра сведений:
Теперь в карте маршрута бизнес-процесса доступна настройка адресации. Укажем для каждой точки действия нужную роль исполнителя:
Чтобы обеспечить ветвление в точке условия, требуется обработчик проверки условия – функция в модуле объекта бизнес-процесса, которая возвращает значение Ложь или Истина. Создадим такой обработчик для точки маршрута ПовторныйПрием:
Чтобы знать, от имени какого пользователя запущен текущий сеанс, нам потребуется параметр сеанса. Создадим его:
Укажем, что созданный параметр сеанса будет хранить текущего исполнителя задач, а также укажем основной реквизит адресации для задачи:
Сделаем так, чтобы при запуске «1С:Предприятия» в параметр сеанса ТекущийПользователь подбиралось нужное значение из справочника «Пользователи». Соответствие будем устанавливать по имени, и если элемент справочника «Пользователи» с нужным именем не найден, то создадим его. Код функции УстановкаПараметровСеанса() в модуле сеанса:
После того, как все нужные элементы справочника «Пользователи» будут созданы, заполним регистр адресации в режиме «1С:Предприятие»:
Отображение задач по исполнителямТеперь поработаем над формой списка задач. Конечно, пользователю хотелось бы, чтобы по умолчанию в списке задач отображались только его задачи. Для этого создадим форму списка задачи «Задача исполнителя» и в настройках основного реквизита Список поменяем основную таблицу на Задача.ЗадачаИсполнителя.ЗадачиПоИсполнителю:
Также можно оставить только еще не выполненные задачи, добавив в настройку списка соответствующий отбор:
Теперь уже можно попробовать создать экземпляр бизнес-процесса, задачи будут создаваться у нужных пользователей. Для этого под любым пользователем, имеющим права на запись бизнес-процесса «Прием нового сотрудника» (например, под Ивановой А.И.), из раздела «Кадровый учет → Прием нового сотрудника» создаем новый экземпляр бизнес-процесса и стартуем его:
После этого у пользователя Петрова В.П. в списке задач (Кадровый учет → Задача исполнителя) появится новая задача:
Визуализация хода бизнес-процессаПока функциональность нашей разработки почти на нуле – только формируются задачи и пользователи вручную отмечают их исполнение.
Для начала хотелось бы иметь возможность отслеживать состояние бизнес-процесса, то есть в какой точке он сейчас находится. Для этого создадим форму бизнес-процесса и добавим на нее реквизит КартаБП типа ГрафическаяСхема, а также выведем элемент управления на форму:
Затем в модуле формы бизнес-процесса создадим процедуру ОбновитьКартуМаршрута:
Вызовем эту процедуру в обработчике события ПриЧтенииНаСервере формы бизнес-процесса:
После этого при открытии формы бизнес-процесса на карте маршрута будет отмечаться текущее положение:
Использовать обработчик ПриСозданииНаСервере для выполнения кода также допустимо, но данный обработчик вызывается и для тех объектов, которые еще не записаны. В нашем случае это приведет к выполнению лишних действий, ведь вновь создаваемый бизнес-процесс еще не стартован, а значит, он всегда находится в своей начальной точке.
Сделаем так, чтобы при нажатии кнопки «Старт» на форме бизнес-процесса карта маршрута обновлялась. Для этого вызовем ту же процедуру ОбновитьКартуМаршрута в обработчике ПослеЗаписиНаСервере:
В таком виде задача может считаться решенной в рамках подготовки к экзамену «1С:Специалист» по платформе. Но мы пойдем немного дальше.
События задач и точек действия бизнес-процессовДля начала добавим автоматическую запись исполнителя в задачу при ее выполнении, чтобы в будущем можно было отследить, кем именно она была выполнена. Ведь младших кадровиков может быть несколько – баба Нюра и баба Катя. До момента выполнения задачи она будет отображаться в списках всех потенциальных исполнителей.
Итак, добавим в модуль объекта ЗадачаИсполнителя стандартный обработчик ПередВыполнением со следующим кодом:
Теперь добавим в бизнес-процесс реквизиты, которые позволят хранить информацию о выполняемых действиях:
Поработаем и с задачей. Выведем на форму задачи ссылку на родительский бизнес-процесс и его реквизиты:
В наименовании задачи было бы неплохо видеть не только название точки маршрута, но и ФИО человека, которого требуется принять на работу. Для этого в модуле объекта бизнес-процесса определим процедуру УстановитьНаименованиеЗадачи, и будем вызывать ее при создании задач:
Процедуру ОбщаяПриСозданииЗадач привяжем к каждой точке маршрута бизнес-процесса. Это можно сделать через карту маршрута:
На каждой точке маршрута можно задавать отдельные обработчики событий, если требуется выполнять различные действия. На этапе выполнения задачи добавим контроль над пользователем со стороны системы: не будем позволять отмечать задачу как выполненную, если необходимые данные не внесены. Для этого в модуль объекта бизнес-процесса добавим функцию ПроверитьВыполнениеЗадачи, которую будем вызывать в обработчике ОбщаяПередВыполнением в каждой точке маршрута (привязка осуществляется также через карту маршрута):
Готово, можно тестировать!
Подведем итогиМы описали только базовые приемы работы с бизнес-процессами и задачами в 1С:Предприятии 8.3. Как минимум, требуется добавить еще множество проверок введенных данных и «красивостей» на уровне форм.
Но цель статьи – показать, как можно использовать объекты системы при автоматизации бизнес-процессов.
Выгрузку базы готового примера можно скачать в конце статьи и использовать в качестве шаблона.
Есть еще множество нюансов, которые просто невозможно рассмотреть в одной статье: программное создание и выполнение задач, групповые задачи, использование вложенных бизнес-процессов, настройка ролей и прав доступа. Плюс зачастую вместо «унылой» формы задачи вызывается форма определенного объекта конфигурации – документа или справочника.
Если эти темы Вам интересны, оставляйте комментарии – и мы продолжим освещать тему бизнес-процессов. :)
Об автореАвтор статьи – Алина Баринова
Консультант-разработчик, компания “Infosuite” (г. Москва)
Выгрузки ИБ и PDF-версия статьи для участников группы ВКонтактеЕсли Вы еще не вступили в нее – сделайте это сейчас, и в блоке ниже (на этой странице) появятся ссылки на скачивание материалов.