Восстановление бизнес-процесса перераспределения задач после обновления Битрикс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 и гарантирует обратную совместимость при обновлениях.
Простота поддержки. Четко структурированный код с логированием позволяет быстро находить и устранять возможные проблемы, а также дорабатывать функционал.