Разработка кастомных процессов согласования Битрикс24

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка кастомных процессов согласования Битрикс24
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Разработка кастомных процессов согласования Битрикс24

Стандартный конструктор бизнес-процессов Битрикс24 закрывает простые линейные маршруты. Договор на согласование: юрист → финансовый директор → генеральный. Это работает. Но бизнес сложнее: сумма договора определяет, кто согласует; юрист в отпуске — передать заместителю; несколько согласующих одновременно, и нужно не менее двух «за»; при отклонении — автоматический возврат инициатору с комментарием и счётчиком итераций. Вот где начинается кастомная разработка.

Когда стандартного конструктора недостаточно

Штатный дизайнер БП Битрикс24 имеет ограничения: сложные условные маршруты (более 3–4 ветвлений) превращаются в нечитаемую схему. Динамические участники (список согласующих определяется на ходу, исходя из данных документа) требуют PHP-кода в блоке «Выполнить код». Интеграция с внешними системами (получить данные из ERP, записать результат в 1С) — только через HTTP-запросы из того же блока. Версионирование процессов (старые запущенные экземпляры работают по старой версии, новые — по новой) отсутствует.

Кастомное решение строится на одном из двух фундаментов:

  • Расширенный БП в дизайнере — добавляем кастомные activity-блоки, которые реализуют нужную логику
  • Смарт-процессы CRM — используем как контейнер для согласования с роботами и триггерами
  • Полностью кастомное приложение — собственная система согласования, интегрированная с Битрикс24 через REST API

Кастомные activity-блоки

Activity — это PHP-класс, реализующий \Bitrix\Bizproc\Activity\Base. Он появляется в дизайнере БП как стандартный блок, но содержит произвольную логику.

Структура кастомной activity:

class SendToErpActivity extends \Bitrix\Bizproc\Activity\Base
{
    public function execute(\CBPActivity $activity): \CBPActivityExecutionStatus
    {
        $dealId = $activity->getDealId(); // получаем параметр из БП

        $erpClient = new ErpApiClient();
        $result = $erpClient->createApprovalRequest($dealId);

        if ($result->isSuccess()) {
            $activity->setVariable('ERP_REQUEST_ID', $result->getId());
            return \CBPActivityExecutionStatus::Closed;
        }

        // Ошибка — можем вернуть Faulting для обработки в БП
        return \CBPActivityExecutionStatus::Faulting;
    }
}

Блок регистрируется в bitrix/activities/ или /local/activities/. После регистрации появляется в дизайнере как стандартный элемент и поддерживает настройку параметров через форму.

Динамические участники

Список согласующих, определяемый данными документа — частый запрос. Например: сумма сделки до 500 000 руб. — согласует руководитель отдела, от 500 000 до 2 000 000 — плюс финансовый директор, выше — плюс генеральный. И это для каждого подразделения своя матрица.

Реализация: activity-блок «Определить согласующих» вычисляет список пользователей на основе данных документа и таблицы полномочий. Таблица полномочий хранится в HL-блоке или отдельной таблице в БД. Результат — массив user_id, который передаётся в следующий блок «Согласование» как параметр.

// HL-блок "Полномочия согласования"
// Поля: DEPARTMENT_ID, AMOUNT_FROM, AMOUNT_TO, APPROVER_USER_ID, APPROVER_ROLE
$approvers = ApprovalMatrixTable::getList([
    'filter' => [
        'DEPARTMENT_ID' => $departmentId,
        '<=AMOUNT_FROM' => $amount,
        '>=AMOUNT_TO' => $amount,
    ],
]);

Заместители и делегирование

Согласующий в отпуске или в командировке — процесс не должен висеть. Два варианта:

Автоматическое делегирование. Перед отправкой задачи на согласование проверяем статус пользователя (через user.get или через кастомное поле профиля «замещает»). Если пользователь отсутствует — задача уходит заместителю.

Делегирование по истечении времени. Если задача не выполнена за X часов — тоже уходит заместителю. Реализуется через блок «Пауза» в БП + условие: если задача не выполнена к моменту окончания паузы — переход по ветке делегирования.

Матрицу замещения ведём в HL-блоке: USER_ID, SUBSTITUTE_USER_ID, DATE_FROM, DATE_TO. Activity-блок проверяет актуального заместителя на момент запуска.

Параллельное согласование с порогом

Три согласующих одновременно, достаточно двух «за»:

[Параллельный блок]
  ├── Задача: Согласующий 1
  ├── Задача: Согласующий 2
  └── Задача: Согласующий 3
[Блок ожидания: 2 из 3 завершены с результатом "Согласовано"]
[Условие: результат?]
  ├── Да → Следующий этап
  └── Нет → Отклонено

В стандартном дизайнере это реализуется через «Параллельную активность» + кастомную activity «Агрегация голосов». Activity следит за накоплением ответов в переменной БП и возвращает Closed только когда порог достигнут.

История согласования и аудит

Каждое действие согласующего (одобрил, отклонил, вернул на доработку) фиксируется:

  • В комментарии к документу через crm.timeline.comment.add
  • В пользовательском поле истории (многострочный текст с append)
  • В отдельном HL-блоке «История согласований» с полями: дата, пользователь, действие, комментарий, версия документа

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

Эскалация и SLA

Для каждого этапа устанавливается SLA (время выполнения). Если срок нарушен:

  1. Уведомление самому согласующему («Вы не ответили на запрос согласования, срок истёк»)
  2. Уведомление его руководителю («Ваш подчинённый не согласовал документ вовремя»)
  3. По истечении второго порога — автоматическое решение по умолчанию (автоматическое одобрение или эскалация выше)

Реализуется через агенты Битрикс или через планировщик в кастомном приложении.

Интеграция с внешними системами в процессе

При запуске согласования и при изменении статуса — уведомление внешних систем:

  • 1С:ЭДО — при финальном согласовании отправляем документ в систему электронного документооборота
  • ERP — при одобрении договора на поставку создаём заказ поставщику
  • Email/Telegram — уведомление внешнего контрагента («Ваш договор согласован»)

Этапы разработки

Этап Содержание Срок
Аналитика Карта маршрутов, матрица полномочий, SLA 1 неделя
Кастомные activity Блоки для специфической логики 1–2 недели
Матрица согласующих HL-блок, логика определения участников 3–5 дней
Замещение и делегирование Матрица замещения, автоматика 3–5 дней
История и аудит Логирование каждого шага 3–5 дней
Эскалация и SLA Агенты, уведомления 3–5 дней
Тестирование Все ветви маршрута, граничные случаи 1 неделя

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