Бизнес-процесс в 1С 8.3: от схемы на бумаге до задач у исполнителей
Содержание
Чтобы настроить бизнес-процесс в 1С 8.3, в Конфигураторе нужны три объекта: Задача (что получает исполнитель), регистр сведений адресации (кому её направить) и сам Бизнес-процесс с картой маршрута. Дальше вы рисуете маршрут из точек «Действие», «Условие», «Разделение», пишете обработчики в модуле объекта, раздаёте права и стартуете процесс из формы или кодом.
Механизм общий для платформы 1С:Предприятие 8.3 и не зависит от конфигурации. Ниже — порядок, в котором его разумно собирать, и приёмы, без которых процесс быстро превращается в кучу зависших задач. Если же вы работаете в типовой конфигурации и программировать не планируете, сразу смотрите раздел про готовый процесс «Задание».
Схема процесса и участники: что решить до Конфигуратора
Самая частая причина переделок — маршрут начали рисовать раньше, чем договорились о правилах. Возьмите лист бумаги и ответьте на пять вопросов.
- Что запускает процесс. Документ (заявка на оплату, договор), справочник или ручной старт.
- Кто участвует. Конкретный пользователь или роль: «руководитель подразделения», «финансовый контролёр». Роль лучше: сотрудники меняются, роли остаются.
- Какие решения принимаются. Согласовать / отклонить / вернуть на доработку. Каждое решение — будущая ветка маршрута.
- Где ветвление. Например, сумма больше 100 000 ₽ — нужна подпись финансового директора.
- Чем всё кончается. Документ проведён, договор подписан, заявка закрыта.
Для примера возьмём «Согласование заявки на оплату»:
| Шаг | Кто | Решение |
|---|---|---|
| Подготовка заявки | Инициатор | — |
| Согласование | Руководитель подразделения | Согласовать / Отклонить |
| Проверка суммы | Система | > 100 000 ₽ или нет |
| Утверждение | Финансовый директор | Утвердить / Отклонить |
| Оплата | Казначей | Отметка об оплате |
| Доработка | Инициатор | При отклонении |
Нарисуйте схему в любом редакторе блок-схем и покажите её участникам. Спор «а мне это зачем» на этапе картинки стоит пять минут, после запуска — неделю.
Объекты метаданных для бизнес-процесса в Конфигураторе
Порядок создания важен: бизнес-процесс ссылается на задачу, задача — на регистр адресации.
Справочник ролей и регистр адресации
- Создайте справочник
РолиИсполнителей(если в конфигурации его ещё нет). - Создайте регистр сведений
АдресацияЗадач, непериодический. - Измерения:
Исполнитель(тип — справочник пользователей ) иРоль(тип —РолиИсполнителей). При необходимости добавьтеПодразделениеилиОрганизация.
Регистр хранит, кто в какой роли сейчас состоит. Задача, адресованная роли «Финансовый директор», увидит всех, кто записан в регистр с этой ролью.
Объект «Задача»
В ветке Задачи добавьте объект, например ЗадачаИсполнителя. Ключевые настройки:
- 📌 Адресация — укажите регистр
АдресацияЗадач. - 📌 Реквизиты адресации — создайте реквизиты
ИсполнительиРольи в их свойствах свяжите с одноимёнными измерениями регистра. - 📌 Основной реквизит адресации — обычно
Исполнитель. - 📌 Текущий исполнитель — реквизит, в который пишется, кто фактически взял задачу.
- 📌 Обычные реквизиты — то, что исполнитель заполняет:
РезультатСогласования,Комментарий,СрокИсполнения.
У задачи уже есть стандартные реквизиты: Выполнена, БизнесПроцесс, ТочкаМаршрута, Наименование, Дата. Дублировать их не нужно.
Объект «Бизнес-процесс»
В ветке Бизнес-процессы создайте СогласованиеЗаявки. На закладке основных свойств в поле Задача выберите ЗадачаИсполнителя — без этого карта маршрута не откроется для редактирования точек «Действие».
Реквизиты процесса: Заявка (ссылка на документ), Сумма, Инициатор, Согласующий. Стандартные реквизиты Стартован, Завершен, ВедущаяЗадача создаются платформой.
Карта маршрута: точки и логика переходов
Карта открывается из окна редактирования бизнес-процесса, кнопка Карта маршрута. Элементы добавляются с панели, переходы — соединительными линиями.
| Точка | Для чего | Создаёт задачу |
|---|---|---|
| Старт | Начало маршрута, одна на процесс | Нет |
| Действие | Работа человека | Да |
| Условие | Две ветки: Истина / Ложь | Нет |
| Выбор варианта | Больше двух исходов | Нет |
| Разделение | Параллельные ветки | Нет |
| Слияние | Ждёт завершения всех веток | Нет |
| Обработка | Автоматическое действие без человека | Нет |
| Подпроцесс | Запуск вложенного процесса | Нет |
| Завершение | Конец маршрута | Нет |
Настройка точки «Действие»
Выделите точку и откройте её свойства:
- Наименование — имя для кода (
Согласование), без пробелов. - Заголовок — то, что увидит пользователь.
- Адресация — значения реквизитов адресации: например, роль «Финансовый директор». Если исполнитель берётся из реквизита процесса, оставьте пустым и заполните в коде.
- Групповая — флажок для групповой точки: задача создаётся на каждую строку адресации, и маршрут идёт дальше, когда все исполнители закрыли свои задачи.
Логика переходов для нашего примера
Старт → Согласование (Действие) → Согласовано? (Условие).
Ветка «Ложь» ведёт в Доработка → Согласование — так получается цикл возврата.
Ветка «Истина» — в условие СуммаБольшеЛимита: «Истина» ведёт в Утверждение, «Ложь» — сразу в Оплата. Дальше — Завершение.
Параллельные ветки и подпроцессы
Когда договор должны одновременно посмотреть юрист и бухгалтер, ставьте после «Действия» точку «Разделение». От неё ведите две линии — к точкам ПроверкаЮристом и ПроверкаБухгалтером. Обе ветки сходятся в «Слиянии»: маршрут пойдёт дальше только после того, как закрыты задачи в каждой ветке.
Так срок согласования сокращается: вместо двух дней последовательно — один день параллельно. Но у такой схемы есть цена. Если юрист отклонил договор, бухгалтер всё равно должен закрыть свою задачу, иначе процесс застрянет на «Слиянии». Решение — в обработчике выполнения задачи юриста при отказе программно закрыть параллельную задачу с пометкой «не требуется».
Точка «Подпроцесс» запускает другой бизнес-процесс как вложенный. Её свойство указывает, какой именно процесс стартовать. Вложенный процесс получает ведущую задачу в реквизит ВедущаяЗадача, а основной маршрут ждёт его завершения. Это удобно, когда один и тот же блок — например, «Подписание у директора» — повторяется в нескольких процессах: его описывают один раз и переиспользуют.
Каждая ветка должна заканчиваться в «Завершении» или возвращаться в маршрут. Висящая линия даст процесс, который формально стартован, но никогда не завершится.
Программная реализация: обработчики в модуле бизнес-процесса
Двойной клик по точке на карте создаёт обработчик в модуле объекта. Имя формируется из имени точки и события.
Заполнение задачи при создании
Процедура СогласованиеПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)
Для Каждого Задача Из ФормируемыеЗадачи Цикл
Задача.Наименование = СтрШаблон("Согласовать заявку %1 на сумму %2",
Заявка, Формат(Сумма, "ЧДЦ=2"));
Задача.Исполнитель = Согласующий;
Задача.СрокИсполнения = ТекущаяДатаСеанса() + 2 * 86400;
КонецЦикла;
КонецПроцедуры
Срок в примере — двое суток: 2 × 86 400 секунд.
Проверка, что исполнитель указал результат
Процедура СогласованиеПриВыполнении(ТочкаМаршрутаБизнесПроцесса, Задача, Отказ)
Если Не ЗначениеЗаполнено(Задача.РезультатСогласования) Тогда
Отказ = Истина;
Сообщить("Укажите результат согласования перед выполнением задачи.");
КонецЕсли;
КонецПроцедуры
Условие ветвления
Процедура СогласованоПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат)
Результат = (РезультатПоследнегоСогласования = Перечисления.РезультатыСогласования.Согласовано);
КонецПроцедуры
Процедура СуммаБольшеЛимитаПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат)
Результат = Сумма > 100000;
КонецПроцедуры
Обработчик условия видит только реквизиты процесса. Поэтому результат задачи нужно перенести в процесс в ПриВыполнении: заведите реквизит РезультатПоследнегоСогласования и присвойте ему значение из задачи, когда она закрывается.
Старт процесса из кода
Удобно запускать согласование прямо из документа — например, командой формы или при записи:
БП = БизнесПроцессы.СогласованиеЗаявки.СоздатьБизнесПроцесс();
БП.Дата = ТекущаяДатаСеанса();
БП.Заявка = СсылкаНаЗаявку;
БП.Сумма = СсылкаНаЗаявку.СуммаДокумента;
БП.Инициатор = ПараметрыСеанса.ТекущийПользователь;
БП.Записать();
БП.Старт();
Если в конфигурации нет параметра сеанса ТекущийПользователь, получите пользователя тем способом, который в ней принят.
Для точки «Обработка» пишите автоматические действия: провести документ, отправить письмо, записать статус в регистр. Человек здесь не нужен, маршрут сразу идёт дальше.
Задачи пользователя: формы, списки и права
Процесс без удобного списка задач никто использовать не будет. Здесь три вещи.
Список «Мои задачи»
Создайте форму списка задачи с отбором по текущему пользователю и Выполнена = Ложь. Задачи, адресованные роли, выбирайте запросом через регистр адресации:
ВЫБРАТЬ
Задача.Ссылка,
Задача.Наименование,
Задача.СрокИсполнения
ИЗ
Задача.ЗадачаИсполнителя КАК Задача
ГДЕ
НЕ Задача.Выполнена
И НЕ Задача.ПометкаУдаления
И (Задача.Исполнитель = &Пользователь
ИЛИ Задача.Роль В
(ВЫБРАТЬ А.Роль ИЗ РегистрСведений.АдресацияЗадач КАК А
ГДЕ А.Исполнитель = &Пользователь))
Добавьте условное оформление: просроченные задачи — красным, на сегодня — жирным.
Форма задачи
В форму выведите реквизиты процесса, которые нужны для решения: ссылку на заявку, сумму, комментарий инициатора. Поля результата сделайте обязательными. Кнопка «Выполнено» должна вызывать выполнение задачи — тогда сработает ПриВыполнении и маршрут пойдёт дальше.
Права
| Объект | Права для исполнителя | Права для инициатора |
|---|---|---|
| Задача | Чтение, Изменение, Выполнение, Интерактивное выполнение | Чтение |
| Бизнес-процесс | Чтение | Добавление, Старт, Интерактивный старт |
| Регистр адресации | Чтение | Чтение |
Без права на выполнение задачу можно открыть, но закрыть нельзя — это частая жалоба после первого запуска.
Тестирование, отладка и мониторинг процессов
Тест на копии
Разверните копию базы , заведите трёх тестовых пользователей с разными ролями и заполните регистр адресации. Пройдите маршрут под каждым — открытие сеанса под другим пользователем быстрее, чем подмена прав.
Обязательные сценарии:
- ✅ сумма ниже лимита — процесс идёт мимо финансового директора;
- ✅ сумма выше лимита — задача уходит финансовому директору;
- ✅ отклонение — задача возвращается инициатору и снова на согласование;
- ✅ параллельные ветки — «Слияние» не пропускает дальше, пока не закрыты все.
Отладка
Ставьте точки останова в ПроверкаУсловия и ПриСозданииЗадач — там обычно и сидит ошибка. Обработчики выполняются на сервере, поэтому отладку сервера нужно включить в настройках отладчика.
Где сейчас процесс, видно в карте маршрута, открытой из формы бизнес-процесса: активные точки подсвечиваются.
Мониторинг
Запрос по невыполненным задачам с СрокИсполнения < &ТекущаяДата — основа отчёта по просрочке. Его удобно повесить на регламентное задание, которое раз в день рассылает напоминания.
| Симптом | Что проверить |
|---|---|
| Задача не появилась у исполнителя | Регистр адресации: есть ли запись с его ролью |
| Процесс стоит на «Слиянии» | Не закрыта задача в одной из параллельных веток |
| Условие всегда идёт в одну ветку | Перенесли ли результат задачи в реквизит процесса |
| Задачу нельзя выполнить | Права на выполнение или Отказ в ПриВыполнении |
Не правьте карту маршрута, пока в рабочей базе есть активные процессы. Удалённая или переименованная точка оставит их в неопределённом состоянии. Сначала завершите или прервите текущие процессы, потом обновляйте.
Готовые бизнес-процессы в типовых конфигурациях
Если конфигурация построена на Библиотеке стандартных подсистем (ERP, Комплексная автоматизация, Документооборот), в ней уже есть подсистема «Бизнес-процессы и задачи» с готовым процессом «Задание». Он покрывает простые поручения: поставил задачу, исполнитель выполнил, автор проверил.
Подсистема включается флажком в разделе администрирования — найдите его поиском по настройкам по слову «бизнес-процессы». После включения пользователи видят задачи и поручения в своих рабочих местах.
Перед изменением конфигурации рабочей базы сделайте резервную копию и согласуйте работы по регламенту. Обновление структуры базы требует монопольного доступа — пользователи должны выйти.