Бизнес-процесс в 1С с нуля: от схемы маршрута до запуска
Содержание
Бизнес-процесс в 1С создаётся в Конфигураторе: вы добавляете объект конфигурации Бизнес-процесс, рисуете для него карту маршрута и подключаете объект Задача, в который процесс будет складывать поручения исполнителям. Всё остальное (роли, код, формы) настраивается вокруг этой связки.
Процесс нужен там, где документ проходит несколько людей по цепочке: заявка, согласование договора, приём сотрудника. Без него маршрут живёт в почте и в голове у руководителя. С ним у каждого шага есть исполнитель, срок и статус, а у руководителя есть список «что где застряло».
Разработка идёт в Конфигураторе, поэтому нужны права на изменение конфигурации. Если база типовая и на поддержке, сначала включите возможность изменения. Типовые конфигурации (Бухгалтерия, ЗУП, УТ) уже содержат подсистему «Бизнес-процессы и задачи» из БСП, и часто проще воспользоваться ею, чем писать своё.
Что подготовить до первого объекта
Пять минут на подготовку экономят часы переделок. Выясните:
- 🧭 Маршрут на бумаге. Кто начинает, кто выполняет, кто проверяет, чем всё заканчивается.
- 🔀 Развилки. Где результат зависит от решения («согласовано» или «отклонено») или от данных (сумма больше лимита).
- 👥 Исполнители. Конкретные пользователи или роли («руководитель подразделения», «бухгалтер по расчётам»).
- 📄 Основной объект. К какому документу или справочнику привязан процесс.
- ⏱ Сроки. Через сколько часов задача считается просроченной.
Работайте в копии базы или в хранилище конфигурации. Любая правка структуры конфигурации требует обновления базы, а на рабочей базе при этом нужен монопольный доступ.
Объекты конфигурации: из чего состоит процесс
В дереве конфигурации есть две ветки, без которых не обойтись.
| Объект | Что хранит | Аналог в жизни |
|---|---|---|
| Бизнес-процесс | Экземпляр процесса, его состояние и карту маршрута | Бланк маршрутного листа |
| Задача | Конкретное поручение конкретному исполнителю | Строка в листе: «подпиши до пятницы» |
Процесс порождает задачи. Исполнитель выполняет задачу, процесс получает результат и идёт дальше по карте.
Для объекта Бизнес-процесс в свойствах указывается, какая Задача с ним связана. Эту связь делают один раз при создании.
Как создать бизнес-процесс и задачу в Конфигураторе
Шаг 1. Добавьте задачу
- Откройте Конфигуратор, в дереве конфигурации найдите ветку
Задачи. - Нажмите правой кнопкой и выберите добавление нового объекта.
- Задайте имя без пробелов, например
ЗадачаИсполнителя. - На вкладке с реквизитами добавьте то, что нужно исполнителю:
Результат(строка или перечисление),Комментарий.
Шаг 2. Добавьте бизнес-процесс
- В ветке
Бизнес-процессыдобавьте объект, напримерСогласование. - В свойствах укажите созданную задачу.
- Добавьте реквизит со ссылкой на основной документ, скажем
ДоговортипаСправочникСсылка.Договоры. - Добавьте реквизиты, которые влияют на маршрут:
Сумма,Срок.
Шаг 3. Подключите права и интерфейс
Дайте ролям права на новые объекты, иначе пользователь не увидит ни процесс, ни задачи. Добавьте объекты в подсистему, чтобы они появились в меню. Для задач удобно вынести список в панель действий: исполнитель открывает его первым.
Формы можно не рисовать вручную: у бизнес-процесса и задачи есть стандартные генераторы. Заготовки форм потом правятся под нужды.
Рисуем карту маршрута: точки, развилки, переходы
Откройте объект бизнес-процесса и перейдите на вкладку Карта маршрута. Здесь схема собирается из готовых элементов.
| Элемент | Для чего |
|---|---|
| Старт | Единственная точка входа |
| Завершение | Конец процесса |
| Действие | Автоматический шаг: код выполняется без человека |
| Задача | Поручение человеку, процесс ждёт результата |
| Условие | Развилка по значению: «да» или «нет» |
| Развилка и Соединение | Параллельные ветки и ожидание их всех |
| Вложенный процесс | Запуск другого процесса как шага |
Пример для согласования договора:
Старт- Задача «Проверить договор» (юрист)
- Условие «Сумма больше лимита?»
- Если да: задача «Утвердить» (директор), если нет: пропуск
- Действие «Присвоить статус»
Завершение
Элементы соединяются стрелками. Из условия выходят две стрелки, и обязательно обе: иначе процесс «повиснет» на этой точке.
Не оставляйте точек без исходящих стрелок. Платформа не даст запустить процесс, а при ошибках в схеме выдаст сообщение при сохранении конфигурации.
Исполнители: как назначить задачу на человека или роль
Адресовать задачу можно двумя способами.
Напрямую. В реквизите Исполнитель задачи записан пользователь. Просто, но при увольнении сотрудника поручения остаются на нём.
Через роль. Вы заводите справочник ролей исполнителей и регистр сведений , где сказано, какой пользователь в какой роли выступает. Задача адресуется на роль, а платформа сама находит людей. Такой способ используется в типовых конфигурациях на базе БСП.
В свойствах объекта Задача для этого есть пункт адресации: можно указать справочник исполнителей и реквизиты адресации, то есть дополнительные измерения. Например, роль «Руководитель подразделения» дополняется подразделением, а значит, один и тот же процесс уходит нужному начальнику.
Пример:
| Роль | Подразделение | Исполнитель |
|---|---|---|
| Руководитель подразделения | Бухгалтерия | Иванова А. |
| Руководитель подразделения | Склад | Петров С. |
| Директор | — | Сидоров В. |
Если на роль назначено несколько человек, задача появится у каждого. Выполнить её может любой, кто успел принять в работу.
Пишем код: обработчики точек маршрута
Логика живёт в модуле объекта бизнес-процесса. У каждой точки маршрута есть свои события. Названия и параметры платформа подставит сама: откройте свойства точки и нажмите на лупу рядом с нужным событием.
Основные:
- ПриСозданииЗадач. Срабатывает перед созданием задач для точки. Здесь заполняют исполнителя, срок и текст.
- ПриВыполнении. Вызывается, когда исполнитель завершил задачу. Здесь читают результат.
- ОбработкаВыполнения у точки «Действие». Автоматический шаг.
- ПроверкаУсловия у точки «Условие». В параметре
РезультатвозвращаютИстинаилиЛожь.
Пример проверки условия «сумма больше лимита»:
Процедура СуммаБольшеЛимитаПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат)
Результат = (Сумма > 100000);
КонецПроцедуры
Пример заполнения задачи перед созданием:
Процедура ПроверитьДоговорПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, СтандартнаяОбработка)
Для Каждого Задача Из ФормируемыеЗадачи Цикл
Задача.Наименование = "Проверить договор: " + Договор;
Задача.СрокИсполнения = ТекущаяДата() + 3 * 24 * 3600;
КонецЦикла;
КонецПроцедуры
Сумма 100 000 рублей здесь взята как пример. В реальной схеме порог лучше вынести в константу или регистр, чтобы менять без Конфигуратора.
Не пишите в обработчиках тяжёлые запросы и длинные циклы. Они выполняются в момент, когда пользователь жмёт кнопку, и интерфейс будет висеть.
Выполнение задачи из кода делается методом ВыполнитьЗадачу объекта-задачи, а пользователь обычно жмёт кнопку на форме. В обработчике нажатия сначала записывают результат, потом вызывают выполнение.
Запуск экземпляра и контроль выполнения
Создать и запустить процесс можно из любого места: из формы документа, из обработки, из регламентного задания. Типичная последовательность:
Процесс = БизнесПроцессы.Согласование.СоздатьБизнесПроцесс();
Процесс.Дата = ТекущаяДата();
Процесс.Договор = ДоговорСсылка;
Процесс.Сумма = 250000;
Процесс.Записать();
Процесс.Стартовать();
Запись и старт разделены сознательно. После Стартовать процесс уходит по карте до первой задачи и останавливается, ожидая исполнителя.
Чтобы следить за ходом, предусмотрите:
- 📋 Список процессов с отбором по состоянию (активен, завершён, прерван).
- 🧾 Список задач с отметкой просроченных. Просрочку считают по сроку исполнения.
- 🗺 Карту маршрута в форме процесса. Платформа умеет показывать, на какой точке процесс стоит сейчас. Для этого в форму добавляют стандартное поле карты.
Остановить процесс можно, указав его прерванным. Если исполнитель уволился, задачу переадресовывают на другого.
Проверка и отладка: прогон по всем веткам
Проверьте каждую ветку, а не только счастливый путь.
- Запустите процесс на тестовой базе от имени обычного пользователя, не администратора. Так вы поймёте, хватает ли ролям прав.
- Выполните задачу с результатом «да», потом заново с результатом «нет».
- Проверьте условие на границе: сумма ровно равна лимиту.
- Поставьте точку останова в
ПроверкаУсловияи убедитесь, чтоРезультатприходит ожидаемый. - Оставьте задачу просроченной и посмотрите, как это отображается в списке.
Если процесс «застрял» и не идёт дальше, чаще всего причина одна из четырёх:
Как развивать схему, когда она заработала
Работающий процесс почти всегда дорабатывают. На что стоит обратить внимание:
- Параллельные ветки. Если юрист и бухгалтер могут проверять договор одновременно, разведите их через
Развилкуи сведитеСоединением. Срок процесса сократится. - Вложенные процессы. Повторяющийся кусок (например, «согласование суммы») выносят в отдельный процесс и вызывают из нескольких схем.
- Напоминания. Регламентное задание раз в день выбирает просроченные задачи и шлёт уведомление.
- Метрики. Считайте среднее время на каждом шаге. Узкое место видно сразу: один исполнитель держит задачи по 5 дней, остальные по одному.
Уже запущенные экземпляры продолжают жить по схеме, с которой стартовали, поэтому перед изменением карты смотрите, сколько процессов сейчас в работе. Существующие точки без нужды не меняйте, лучше добавляйте новые.
Когда свой процесс писать не нужно
Не каждое согласование требует отдельного объекта конфигурации. Прикиньте заранее:
- ✅ Своя разработка оправдана, если маршрут уникален, завязан на ваши документы и меняется редко.
- ❌ Не оправдана, если нужно просто «отправить документ на согласование». В типовых конфигурациях на БСП для этого есть готовые механизмы: исполнителю уходит задача, руководитель видит её в своём списке.
- ⚠️ Опасна, если в базе на поддержке вендора вы плодите десятки собственных процессов. Каждое обновление типовой конфигурации придётся сверять с вашими доработками.
Хорошее правило: сначала поищите готовое в подсистеме задач, и только потом открывайте Конфигуратор. Сравнение трудоёмкости примерное: настройка готового маршрута занимает час-два, разработка собственного процесса с формами, ролями и отладкой от нескольких дней.
Типичные ошибки при создании процесса
Эти грабли встречаются чаще других:
- Пустой исполнитель. В
ПриСозданииЗадачзабыли заполнить адресацию, и задача никому не видна. Добавьте проверку и понятное сообщение. - Нет стрелки после условия. Платформа заметит это при проверке конфигурации. Запускайте проверку после каждой правки карты.
- Бесконечный цикл. Схема возвращает задачу на доработку, а условие выхода не срабатывает. Ограничьте число возвратов, например тремя.
- Правка на рабочей базе. Менять карту в боевой базе без копии нельзя: ошибка остановит чужие процессы.