Восстановление бизнес-процесса перераспределения задач после обновления Битрикс24

#Битрикс24
Не просто устранили последствия неудачного обновления, а провели техническую модернизацию ключевого процесса

Проблема клиента

Клиент столкнулся с критической проблемой после масштабного обновления корпоративного портала Битрикс24 и миграции на новый сервер. Перестал функционировать ключевой бизнес-процесс (БП), отвечающий за автоматическое назначение соисполнителей в задачах.
Внутри БП использовался встроенный PHP-код, который:
  1. Находил все задачи, где сотрудник выступал в роли заявителя (постановщика).
  2. Автоматически добавлял в эти задачи указанного заявителем соисполнителя.
  3. Логика работала как для задач, где заявитель был ответственным, так и где он был соисполнителем.
Сбой этого процесса парализовал внутреннее взаимодействие в отделах, где важна коллаборация и четкое распределение зон ответственности.

Проблема и анализ

Причина неисправности крылась в устаревшем и небезопасном подходе:
➤
Жесткая привязка к внутренней структуре. Использованный в БП код напрямую работал с внутренними объектами системы. После обновления ядра Битрикс24 или PHP-окружения на сервере эти методы стали несовместимы.
➤
Риск «зависания». Исходный код не имел механизмов обработки больших объемов данных. При попытке обработать сотни задач процесс мог прерываться, вызывая таймауты.
➤
Сложность поддержки. Встроенный код в конструкторе БП сложно отлаживать, актуализировать и сопровождать.

Наше решение

Мы разработали и внедрили автономный внешний обработчик на PHP, который полностью заменил нестабильный фрагмент кода внутри бизнес-процесса. В основе решения лежит использование официального REST API Битрикс24.

Ключевые шаги реализации

1
Сбор задач заявителя. Использовали метод tasks.task.list.json с фильтрами:
  • По ID заявителя как RESPONSIBLE_ID или соисполнителя (UF_TASK_EXECUTORS).
  • Ограничения по статусу (активные задачи), датам и группе.
  • Пагинация для обработки тысяч задач без таймаутов (start=0, limit=50 в цикле).
2
Обновление задач. Для каждой подходящей задачи вызывали tasks.task.update.json:
  • Добавляли соисполнителя в массив UF_TASK_EXECUTORS.
  • Логировали изменения для аудита.
3
Интеграция в БП:
  • В стадии БП добавили вызов внешнего обработчика через webhook (REST-вызов по URL).
  • Обработчик — PHP-скрипт на сервере клиента (или в облаке), выполняющийся асинхронно.

Технический стэк

  • REST API Битрикс24 (tasks.task.list и tasks.task.update).
  • PHP 8+ с cURL для API-запросов.
  • Обработка ошибок, retry-логика и кэширование (Redis для избежания дубликатов).
  • Тестирование на нагрузку: 1000+ задач за 2-3 минуты без зависаний.
Решение работает быстрее оригинала в 5 раз и не нагружает портал — вся логика вынесена наружу.

Результат

➤
100% восстановление функционала без потери данных.
➤
Масштабируемость. Архитектура позволяет легко адаптировать обработчик для решения схожих задач: массовое обновление полей, синхронизация данных, сложные выборки.
➤
Надежность и будущая безопасность. Решение построено на стабильном REST API, который является приоритетным интерфейсом для разработки под Битрикс24 и гарантирует обратную совместимость при обновлениях.
➤
Простота поддержки. Четко структурированный код с логированием позволяет быстро находить и устранять возможные проблемы, а также дорабатывать функционал.