Бизнес-процесс в конфигураторе 1С 8.3: от схемы на бумаге до первой задачи
Содержание
Бизнес-процесс в 1С 8.3 настраивается в конфигураторе из двух объектов метаданных: Бизнес-процесс (маршрут) и Задача (то, что получает исполнитель). Порядок такой: создаёте задачу и регистр адресации, затем бизнес-процесс, рисуете карту маршрута, пишете обработчики точек, выдаёте права ролям и запускаете тестовый экземпляр.
Ниже речь идёт о механизме платформы, он одинаков для любой конфигурации. В типовых решениях на БСП есть готовая подсистема «Бизнес-процессы и задачи» с заданиями и ролевой адресацией. Если её возможностей хватает, программировать ничего не нужно. Свой бизнес-процесс пишут, когда маршрут нестандартный: согласование заявки по сумме, приёмка товара с несколькими участниками, проверка договора юристом и финансистом.
Что продумать до открытия конфигуратора
Карта маршрута рисуется быстро. Долго потом переделывают то, что не обсудили заранее. Прежде чем создавать объекты, ответьте на шесть вопросов:
- 📌 Какой объект запускает процесс. Документ «Заявка на оплату», договор, служебная записка. Ссылка на него станет реквизитом бизнес-процесса.
- 👥 Кто участвует. Конкретные пользователи или роли: «руководитель подразделения», «главный бухгалтер». Роли почти всегда лучше — люди уходят в отпуск и увольняются.
- 🔀 Где маршрут ветвится. Условия формулируйте числом или флагом: «сумма больше 100 000 руб.», «договор с новым контрагентом».
- ⏩ Что идёт параллельно. Юрист и финансист могут смотреть договор одновременно, а не по очереди.
- ↩️ Куда возвращается отказ. На доработку инициатору или сразу в завершение.
- ✅ Что считается результатом. Проведённый документ, установленный статус, запись в регистре.
Нарисуйте схему на бумаге или в любом редакторе диаграмм. Каждый прямоугольник «кто-то что-то делает» станет точкой действия, каждый ромб — точкой условия или выбора.
Сразу договоритесь, что делать с задачей, если исполнитель уволился. Ответ влияет на схему адресации: при адресации на роль задачу подхватит новый сотрудник, при адресации на конкретного пользователя её придётся переназначать вручную.
Объекты для бизнес-процесса: задача, адресация и сам маршрут
Бизнес-процесс не работает без объекта «Задача», поэтому начинают с неё.
Шаг 1. Регистр адресации
Если задачи будут адресоваться на роли, сначала создайте:
- справочник ролей исполнителей (например,
РолиИсполнителей); - непериодический регистр сведений
, например
ИсполнителиЗадач, с измерениямиРольИсполнителяиИсполнитель(тип — справочник пользователей). При необходимости добавьте измерения-уточнения: подразделение, организация.
Регистр отвечает на вопрос «кто сейчас выполняет роль X в подразделении Y».
Шаг 2. Объект «Задача»
В дереве конфигурации откройте ветку Задачи и добавьте новый объект. Главное здесь — вкладка с адресацией:
| Свойство | Что указать |
|---|---|
| Адресация | Регистр сведений из шага 1 |
| Реквизиты адресации | Исполнитель, РольИсполнителя и уточнения; у каждого задаётся измерение регистра, с которым он связан |
| Основной реквизит адресации | Реквизит, по которому работает виртуальная таблица задач по исполнителю |
| Текущий исполнитель | Выражение, определяющее пользователя сеанса, обычно ссылка на текущего пользователя |
У задачи уже есть стандартные реквизиты: Дата, Номер, Наименование, Выполнена, БизнесПроцесс, ТочкаМаршрута. Свои реквизиты добавляйте только под данные, которые исполнитель вводит при выполнении: «Решение», «Комментарий».
Шаг 3. Объект «Бизнес-процесс»
В ветке Бизнес-процессы создайте объект, например СогласованиеЗаявки. В его свойствах укажите созданную задачу — без этого карту маршрута не построить. Добавьте реквизиты, которые нужны маршруту: ссылку на заявку, сумму, инициатора, результат согласования.
Карта маршрута бизнес-процесса: точки и связи
Карта открывается из окна редактирования бизнес-процесса кнопкой Карта маршрута. Элементы берутся с панели графической схемы и соединяются линиями.
| Точка | Назначение | Создаёт задачу |
|---|---|---|
| Старт | Начало маршрута, ровно одна на карте | Нет |
| Действие | Работа человека: согласовать, проверить, подписать | Да |
| Условие | Ветвление на два выхода: «Да» и «Нет» | Нет |
| Выбор варианта | Ветвление на несколько выходов | Нет |
| Разделение | Запуск параллельных веток | Нет |
| Слияние | Ожидание завершения параллельных веток | Нет |
| Обработка | Автоматическое действие кодом без участия человека | Нет |
| Вложенный бизнес-процесс | Запуск другого бизнес-процесса | Нет |
| Завершение | Конец маршрута, их может быть несколько | Нет |
Для заявки на оплату карта может выглядеть так:
Старт
→ Условие «Сумма > 100 000»
Да → Действие «Согласовать с финдиректором» → Действие «Согласовать с руководителем»
Нет → Действие «Согласовать с руководителем»
→ Условие «Согласовано?»
Да → Обработка «Установить статус заявки» → Завершение
Нет → Действие «Доработать заявку» (инициатор) → назад к первому условию
У каждой точки задайте Имя — по нему к точке обращаются в коде: БизнесПроцессы.СогласованиеЗаявки.ТочкиМаршрута.СогласоватьСРуководителем. И Наименование — оно попадёт в наименование задачи и будет видно пользователю в списке.
Каждое разделение должно закрываться слиянием. Если параллельная ветка ушла в завершение мимо слияния, процесс зависнет в ожидании ветки, которая уже никогда не придёт.
Маршруты и условия перехода: код в модуле объекта
Условия и автоматические действия программируются в модуле объекта бизнес-процесса. Обработчик проще всего создать из палитры свойств точки: конфигуратор сам вставит процедуру с правильным именем и параметрами.
Условие
Для точки условия ПроверкаСуммы обработчик выглядит так:
Процедура ПроверкаСуммыПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат)
Результат = (Сумма > 100000);
КонецПроцедуры
Результат = Истина ведёт процесс по линии «Да», Ложь — по линии «Нет». Порог лучше не зашивать в код, а хранить в константе: финдиректор захочет поменять его через месяц.
Решение исполнителя как условие
Чтобы ветвиться по ответу согласующего, сохраняйте его решение в реквизит бизнес-процесса при выполнении задачи. Это делается в обработчике ПриВыполнении точки действия: из задачи читается реквизит «Решение» и записывается в реквизит Согласовано самого процесса. Следующая точка условия просто проверяет Результат = Согласовано.
Обработка
Точка обработки выполняет код без участия человека: проводит документ, ставит статус, отправляет письмо. Ошибки здесь обрабатывайте явно — исключение в точке обработки прервёт продвижение процесса, а пользователь увидит лишь сообщение при выполнении предыдущей задачи.
Исполнители и роли: кто получает задачу
Исполнитель определяется в свойствах точки действия, в группе адресации. Вариантов два.
Статическая адресация. В свойствах точки задаётся конкретное значение реквизита адресации, например роль «Главный бухгалтер». Подходит для стабильных маршрутов.
Динамическая адресация. Исполнитель вычисляется в момент создания задачи: руководитель подразделения инициатора, ответственный по договору. Для этого в обработчике ПриСозданииЗадач точки действия заполните реквизиты адресации у формируемых задач:
Процедура СогласоватьСРуководителемПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)
Для Каждого Задача Из ФормируемыеЗадачи Цикл
Задача.Исполнитель = Руководитель;
КонецЦикла;
КонецПроцедуры
Где брать Руководитель — решает ваша модель данных: реквизит процесса, заполненный при старте, или запрос к регистру адресации.
Групповая точка
Если согласовать должны трое, а не один, у точки действия включают признак групповой точки. Тогда платформа создаёт по задаче на каждого исполнителя, а процесс идёт дальше, когда выполнены все. Логику «достаточно одного согласия из трёх» придётся писать самостоятельно в обработчике проверки выполнения.
Права ролей
Отдельно настройте права в объектах Роли:
- 🔑 на бизнес-процесс —
СтартиИнтерактивный стартдля инициаторов; - 🔑 на задачу —
ВыполнениеиИнтерактивное выполнениедля исполнителей; - 🔑 на регистр адресации — чтение для всех участников, запись для того, кто назначает роли.
Без права на выполнение пользователь увидит задачу в списке, но не сможет её закрыть.
Как исполнители работают с задачами
Пользователю нужен список «Мои задачи». В основе — виртуальная таблица задач по исполнителю. Простой запрос для формы списка:
ВЫБРАТЬ
Задачи.Ссылка,
Задачи.Дата,
Задачи.Наименование,
Задачи.БизнесПроцесс
ИЗ
Задача.ЗадачаИсполнителя.ЗадачиПоИсполнителю(&Исполнитель) КАК Задачи
ГДЕ
НЕ Задачи.Выполнена
Таблица учитывает и прямую адресацию на пользователя, и адресацию через роль из регистра — ради этого регистр и связывается с реквизитами адресации.
Что стоит добавить в форму задачи:
- 📎 ссылку на исходный документ, открывающуюся одним щелчком — согласующему нужно видеть заявку, а не только название задачи;
- ✍️ поле решения и комментарий, обязательный при отказе;
- ✔️ кнопки «Согласовать» и «Отклонить», которые заполняют решение и выполняют задачу. В коде формы для этого есть метод интерактивного выполнения задачи, в модуле объекта —
ВыполнитьЗадачу().
Запуск процесса из документа удобно повесить на кнопку «Отправить на согласование»: создаёте объект бизнес-процесса, заполняете реквизиты, записываете и вызываете метод Старт().
В типовых конфигурациях на БСП задачи по ролям также видны в разделе органайзера, а уведомления о новых задачах приходят на почту — повторять это в своём процессе не обязательно, если вы используете общий объект задачи подсистемы.
Отладка и контроль работающих процессов
Отладка обработчиков
Обработчики точек — обычный код модуля объекта, поэтому отлаживаются точками останова. Запустите базу в режиме отладки из конфигуратора, поставьте останов в ПроверкаУсловия или ПриСозданииЗадач, стартуйте тестовый процесс. Удобно сделать отдельную тестовую роль и двух-трёх пользователей, чтобы пройти маршрут за каждого участника.
Составьте набор тестовых случаев заранее, по одному на каждую ветку карты:
- Заявка на 50 000 руб., согласована с первого раза.
- Заявка на 150 000 руб., согласована финдиректором и руководителем.
- Заявка отклонена, доработана и согласована со второго круга.
- Заявка отклонена три раза и закрыта с результатом «Отклонено».
Если хотя бы один случай не дошёл до точки завершения, ищите ошибку в линиях карты или в обработчике условия, через которое прошёл экземпляр.
Где процесс сейчас
В форме экземпляра бизнес-процесса выведите карту маршрута: платформа покажет на ней пройденные и текущие точки. Это первое, что смотрят, когда пользователь жалуется «заявка застряла».
Для массового контроля пригодится виртуальная таблица точек маршрута бизнес-процесса и запрос по невыполненным задачам. Полезные срезы:
| Что проверить | Как получить |
|---|---|
| Сколько заявок висит у каждого исполнителя | Невыполненные задачи, группировка по реквизиту адресации |
| Где процессы задерживаются дольше всего | Разница между датой задачи и текущей датой, по точкам маршрута |
| Какие процессы стартованы, но не завершены | Стандартные реквизиты процесса Стартован и Завершен |
| Задачи без исполнителя | Задачи, у которых пусты все реквизиты адресации или роль не заполнена в регистре |
Изменения в работающем процессе
Карту маршрута можно дорабатывать, но с осторожностью. Если удалить точку, на которой стоят живые экземпляры, их задачи останутся без продолжения.
Перед удалением или переименованием точки маршрута проверьте, нет ли на ней незавершённых процессов. Безопаснее завести новую версию маршрута для новых заявок и дать старым дойти до конца.
Просчёты, которые всплывают после запуска
Маршрут может пройти все тесты и всё равно дать сбой в первый месяц работы. Вот что чаще приходится дорабатывать.
Документ меняют после согласования. Руководитель одобрил заявку на 80 000 руб., а инициатор исправил сумму на 180 000 и провёл. Решение: пока процесс не завершён, запрещайте изменение ключевых реквизитов документа в его модуле ПередЗаписью или фиксируйте согласованную сумму в реквизите процесса и сравнивайте её при проведении.
Бесконечная доработка. Петля «отклонить → доработать → снова на согласование» без ограничений может крутиться неделями. Храните в реквизите процесса счётчик кругов и после третьего отказа отправляйте процесс в завершение с результатом «Отклонено».
Нет замещения на время отпуска. Роль закреплена за одним человеком, он уходит на две недели, заявки стоят. Предусмотрите в регистре адресации запись для заместителя или дайте администратору право временно менять исполнителя роли.
Наименование задачи ни о чём не говорит. Список из двадцати строк «Согласовать с руководителем» бесполезен. Дописывайте в наименование номер и сумму документа в обработчике ПриСозданииЗадач, например через СтрШаблон("%1: заявка № %2", Задача.Наименование, НомерЗаявки).
Частые вопросы
Можно ли настроить бизнес-процесс без программирования?
Чем точка условия отличается от точки выбора варианта?
Что будет с задачей, если сотрудник уволился?
Можно ли запустить бизнес-процесс автоматически, без кнопки?
Старт(), например в обработчике проведения документа или в регламентном задании.