Бизнес-процесс в 1С 8.3: от схемы на бумаге до задач у исполнителей

· 9 мин

Содержание

Чтобы настроить бизнес-процесс в 1С 8.3, в Конфигураторе нужны три объекта: Задача (что получает исполнитель), регистр сведений адресации (кому её направить) и сам Бизнес-процесс с картой маршрута. Дальше вы рисуете маршрут из точек «Действие», «Условие», «Разделение», пишете обработчики в модуле объекта, раздаёте права и стартуете процесс из формы или кодом.

Механизм общий для платформы 1С:Предприятие 8.3 и не зависит от конфигурации. Ниже — порядок, в котором его разумно собирать, и приёмы, без которых процесс быстро превращается в кучу зависших задач. Если же вы работаете в типовой конфигурации и программировать не планируете, сразу смотрите раздел про готовый процесс «Задание».

Схема процесса и участники: что решить до Конфигуратора

Самая частая причина переделок — маршрут начали рисовать раньше, чем договорились о правилах. Возьмите лист бумаги и ответьте на пять вопросов.

  1. Что запускает процесс. Документ (заявка на оплату, договор), справочник или ручной старт.
  2. Кто участвует. Конкретный пользователь или роль: «руководитель подразделения», «финансовый контролёр». Роль лучше: сотрудники меняются, роли остаются.
  3. Какие решения принимаются. Согласовать / отклонить / вернуть на доработку. Каждое решение — будущая ветка маршрута.
  4. Где ветвление. Например, сумма больше 100 000 ₽ — нужна подпись финансового директора.
  5. Чем всё кончается. Документ проведён, договор подписан, заявка закрыта.

Для примера возьмём «Согласование заявки на оплату»:

ШагКтоРешение
Подготовка заявкиИнициатор—
СогласованиеРуководитель подразделенияСогласовать / Отклонить
Проверка суммыСистема> 100 000 ₽ или нет
УтверждениеФинансовый директорУтвердить / Отклонить
ОплатаКазначейОтметка об оплате
ДоработкаИнициаторПри отклонении

Нарисуйте схему в любом редакторе блок-схем и покажите её участникам. Спор «а мне это зачем» на этапе картинки стоит пять минут, после запуска — неделю.

Объекты метаданных для бизнес-процесса в Конфигураторе

Порядок создания важен: бизнес-процесс ссылается на задачу, задача — на регистр адресации.

Справочник ролей и регистр адресации

  1. Создайте справочник РолиИсполнителей (если в конфигурации его ещё нет).
  2. Создайте регистр сведений АдресацияЗадач, непериодический.
  3. Измерения: Исполнитель (тип — справочник пользователей ) и Роль (тип — РолиИсполнителей). При необходимости добавьте Подразделение или Организация.

Регистр хранит, кто в какой роли сейчас состоит. Задача, адресованная роли «Финансовый директор», увидит всех, кто записан в регистр с этой ролью.

Объект «Задача»

В ветке Задачи добавьте объект, например ЗадачаИсполнителя. Ключевые настройки:

  • 📌 Адресация — укажите регистр АдресацияЗадач.
  • 📌 Реквизиты адресации — создайте реквизиты Исполнитель и Роль и в их свойствах свяжите с одноимёнными измерениями регистра.
  • 📌 Основной реквизит адресации — обычно Исполнитель.
  • 📌 Текущий исполнитель — реквизит, в который пишется, кто фактически взял задачу.
  • 📌 Обычные реквизиты — то, что исполнитель заполняет: РезультатСогласования, Комментарий, СрокИсполнения.

У задачи уже есть стандартные реквизиты: Выполнена, БизнесПроцесс, ТочкаМаршрута, Наименование, Дата. Дублировать их не нужно.

Объект «Бизнес-процесс»

В ветке Бизнес-процессы создайте СогласованиеЗаявки. На закладке основных свойств в поле Задача выберите ЗадачаИсполнителя — без этого карта маршрута не откроется для редактирования точек «Действие».

Реквизиты процесса: Заявка (ссылка на документ), Сумма, Инициатор, Согласующий. Стандартные реквизиты Стартован, Завершен, ВедущаяЗадача создаются платформой.

Карта маршрута: точки и логика переходов

Карта открывается из окна редактирования бизнес-процесса, кнопка Карта маршрута. Элементы добавляются с панели, переходы — соединительными линиями.

ТочкаДля чегоСоздаёт задачу
СтартНачало маршрута, одна на процессНет
ДействиеРабота человекаДа
УсловиеДве ветки: Истина / ЛожьНет
Выбор вариантаБольше двух исходовНет
РазделениеПараллельные веткиНет
СлияниеЖдёт завершения всех ветокНет
ОбработкаАвтоматическое действие без человекаНет
ПодпроцессЗапуск вложенного процессаНет
ЗавершениеКонец маршрутаНет

Настройка точки «Действие»

Выделите точку и откройте её свойства:

  • Наименование — имя для кода (Согласование), без пробелов.
  • Заголовок — то, что увидит пользователь.
  • Адресация — значения реквизитов адресации: например, роль «Финансовый директор». Если исполнитель берётся из реквизита процесса, оставьте пустым и заполните в коде.
  • Групповая — флажок для групповой точки: задача создаётся на каждую строку адресации, и маршрут идёт дальше, когда все исполнители закрыли свои задачи.

Логика переходов для нашего примера

Старт → Согласование (Действие) → Согласовано? (Условие). Ветка «Ложь» ведёт в Доработка → Согласование — так получается цикл возврата. Ветка «Истина» — в условие СуммаБольшеЛимита: «Истина» ведёт в Утверждение, «Ложь» — сразу в Оплата. Дальше — Завершение.

Параллельные ветки и подпроцессы

Когда договор должны одновременно посмотреть юрист и бухгалтер, ставьте после «Действия» точку «Разделение». От неё ведите две линии — к точкам ПроверкаЮристом и ПроверкаБухгалтером. Обе ветки сходятся в «Слиянии»: маршрут пойдёт дальше только после того, как закрыты задачи в каждой ветке.

Так срок согласования сокращается: вместо двух дней последовательно — один день параллельно. Но у такой схемы есть цена. Если юрист отклонил договор, бухгалтер всё равно должен закрыть свою задачу, иначе процесс застрянет на «Слиянии». Решение — в обработчике выполнения задачи юриста при отказе программно закрыть параллельную задачу с пометкой «не требуется».

Точка «Подпроцесс» запускает другой бизнес-процесс как вложенный. Её свойство указывает, какой именно процесс стартовать. Вложенный процесс получает ведущую задачу в реквизит ВедущаяЗадача, а основной маршрут ждёт его завершения. Это удобно, когда один и тот же блок — например, «Подписание у директора» — повторяется в нескольких процессах: его описывают один раз и переиспользуют.

Каждая ветка должна заканчиваться в «Завершении» или возвращаться в маршрут. Висящая линия даст процесс, который формально стартован, но никогда не завершится.

Программная реализация: обработчики в модуле бизнес-процесса

Двойной клик по точке на карте создаёт обработчик в модуле объекта. Имя формируется из имени точки и события.

Заполнение задачи при создании

Процедура СогласованиеПриСозданииЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, Отказ)
    Для Каждого Задача Из ФормируемыеЗадачи Цикл
        Задача.Наименование = СтрШаблон("Согласовать заявку %1 на сумму %2",
            Заявка, Формат(Сумма, "ЧДЦ=2"));
        Задача.Исполнитель = Согласующий;
        Задача.СрокИсполнения = ТекущаяДатаСеанса() + 2 * 86400;
    КонецЦикла;
КонецПроцедуры

Срок в примере — двое суток: 2 × 86 400 секунд.

Проверка, что исполнитель указал результат

Процедура СогласованиеПриВыполнении(ТочкаМаршрутаБизнесПроцесса, Задача, Отказ)
    Если Не ЗначениеЗаполнено(Задача.РезультатСогласования) Тогда
        Отказ = Истина;
        Сообщить("Укажите результат согласования перед выполнением задачи.");
    КонецЕсли;
КонецПроцедуры

Условие ветвления

Процедура СогласованоПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат)
    Результат = (РезультатПоследнегоСогласования = Перечисления.РезультатыСогласования.Согласовано);
КонецПроцедуры

Процедура СуммаБольшеЛимитаПроверкаУсловия(ТочкаМаршрутаБизнесПроцесса, Результат)
    Результат = Сумма > 100000;
КонецПроцедуры

Обработчик условия видит только реквизиты процесса. Поэтому результат задачи нужно перенести в процесс в ПриВыполнении: заведите реквизит РезультатПоследнегоСогласования и присвойте ему значение из задачи, когда она закрывается.

Старт процесса из кода

Удобно запускать согласование прямо из документа — например, командой формы или при записи:

БП = БизнесПроцессы.СогласованиеЗаявки.СоздатьБизнесПроцесс();
БП.Дата = ТекущаяДатаСеанса();
БП.Заявка = СсылкаНаЗаявку;
БП.Сумма = СсылкаНаЗаявку.СуммаДокумента;
БП.Инициатор = ПараметрыСеанса.ТекущийПользователь;
БП.Записать();
БП.Старт();

Если в конфигурации нет параметра сеанса ТекущийПользователь, получите пользователя тем способом, который в ней принят.

Для точки «Обработка» пишите автоматические действия: провести документ, отправить письмо, записать статус в регистр. Человек здесь не нужен, маршрут сразу идёт дальше.

Задачи пользователя: формы, списки и права

Процесс без удобного списка задач никто использовать не будет. Здесь три вещи.

Список «Мои задачи»

Создайте форму списка задачи с отбором по текущему пользователю и Выполнена = Ложь. Задачи, адресованные роли, выбирайте запросом через регистр адресации:

ВЫБРАТЬ
    Задача.Ссылка,
    Задача.Наименование,
    Задача.СрокИсполнения
ИЗ
    Задача.ЗадачаИсполнителя КАК Задача
ГДЕ
    НЕ Задача.Выполнена
    И НЕ Задача.ПометкаУдаления
    И (Задача.Исполнитель = &Пользователь
        ИЛИ Задача.Роль В
            (ВЫБРАТЬ А.Роль ИЗ РегистрСведений.АдресацияЗадач КАК А
             ГДЕ А.Исполнитель = &Пользователь))

Добавьте условное оформление: просроченные задачи — красным, на сегодня — жирным.

Форма задачи

В форму выведите реквизиты процесса, которые нужны для решения: ссылку на заявку, сумму, комментарий инициатора. Поля результата сделайте обязательными. Кнопка «Выполнено» должна вызывать выполнение задачи — тогда сработает ПриВыполнении и маршрут пойдёт дальше.

Права

ОбъектПрава для исполнителяПрава для инициатора
ЗадачаЧтение, Изменение, Выполнение, Интерактивное выполнениеЧтение
Бизнес-процессЧтениеДобавление, Старт, Интерактивный старт
Регистр адресацииЧтениеЧтение

Без права на выполнение задачу можно открыть, но закрыть нельзя — это частая жалоба после первого запуска.

Тестирование, отладка и мониторинг процессов

Тест на копии

Разверните копию базы , заведите трёх тестовых пользователей с разными ролями и заполните регистр адресации. Пройдите маршрут под каждым — открытие сеанса под другим пользователем быстрее, чем подмена прав.

Обязательные сценарии:

  • ✅ сумма ниже лимита — процесс идёт мимо финансового директора;
  • ✅ сумма выше лимита — задача уходит финансовому директору;
  • ✅ отклонение — задача возвращается инициатору и снова на согласование;
  • ✅ параллельные ветки — «Слияние» не пропускает дальше, пока не закрыты все.

Отладка

Ставьте точки останова в ПроверкаУсловия и ПриСозданииЗадач — там обычно и сидит ошибка. Обработчики выполняются на сервере, поэтому отладку сервера нужно включить в настройках отладчика.

Где сейчас процесс, видно в карте маршрута, открытой из формы бизнес-процесса: активные точки подсвечиваются.

Мониторинг

Запрос по невыполненным задачам с СрокИсполнения < &ТекущаяДата — основа отчёта по просрочке. Его удобно повесить на регламентное задание, которое раз в день рассылает напоминания.

СимптомЧто проверить
Задача не появилась у исполнителяРегистр адресации: есть ли запись с его ролью
Процесс стоит на «Слиянии»Не закрыта задача в одной из параллельных веток
Условие всегда идёт в одну веткуПеренесли ли результат задачи в реквизит процесса
Задачу нельзя выполнитьПрава на выполнение или Отказ в ПриВыполнении

Не правьте карту маршрута, пока в рабочей базе есть активные процессы. Удалённая или переименованная точка оставит их в неопределённом состоянии. Сначала завершите или прервите текущие процессы, потом обновляйте.

Готовые бизнес-процессы в типовых конфигурациях

Если конфигурация построена на Библиотеке стандартных подсистем (ERP, Комплексная автоматизация, Документооборот), в ней уже есть подсистема «Бизнес-процессы и задачи» с готовым процессом «Задание». Он покрывает простые поручения: поставил задачу, исполнитель выполнил, автор проверил.

Подсистема включается флажком в разделе администрирования — найдите его поиском по настройкам по слову «бизнес-процессы». После включения пользователи видят задачи и поручения в своих рабочих местах.

Какой путь выбрать?

Перед изменением конфигурации рабочей базы сделайте резервную копию и согласуйте работы по регламенту. Обновление структуры базы требует монопольного доступа — пользователи должны выйти.

Частые вопросы

Можно ли назначить задачу сразу нескольким людям?
Да. Адресуйте точку роли — задачу увидят все сотрудники с ней, выполнит первый. Если нужно, чтобы выполнил каждый, включите у точки флажок групповой.
Как передать задачу другому исполнителю?
Измените реквизиты адресации задачи (исполнителя или роль) и запишите её. Процесс продолжится с новым исполнителем, маршрут не перезапускается.
Можно ли остановить процесс на полпути?
Можно пометить процесс на удаление или завершить его программно, но незакрытые задачи останутся в базе. Удобнее добавить в маршрут ветку отмены, которая ведёт в «Завершение».
Сколько бизнес-процессов может быть в одной конфигурации?
Ограничения платформы на число объектов этого вида нет. Задача может обслуживать несколько разных процессов — это нормальная практика.
Работают ли бизнес-процессы в файловой базе?
Да, механизм не зависит от варианта работы. Разница только в нагрузке: при сотнях активных процессов файловая база будет медленнее клиент-серверной.