Как не «захлебнуться» в массовой обработке объектов и данных в CRM Битрикс24

Делимся опытом, как настроить массовую обработку и сэкономить десятки часов на рутинных задачах.

Зачем нужна массовая обработка?

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

Многие пользователи Битрикс24 сталкиваются с задачами, требующими массовой обработки данных:

  • Обновление лидов.
  • Запуск процессов по сделкам.
  • Изменение атрибутов клиентов.
  • Работа с универсальными списками.
  • Взаимодействие с файлами на диске.

Если количество записей невелико, можно обойтись умными сценариями (см. официальную документацию). Но что делать, когда таких записей тысячи, и каждую нужно обработать?

Решение – запуск бизнес-процессов через универсальный список, где заранее формируется массив ID объектов для дальнейшей автоматической обработки.

Также мы разработали модуль для Битрикс24, который позволяет удалить и объединить дубли контактов и привести в порядок клиентскую базу в 500 000 записей всего за 2,5 – 3 часа.

Как реализовать: пошаговая инструкция

1. Создание универсального списка

Создайте универсальный список, который будет использоваться в роли очереди обработки. В него поместите ID объектов CRM (например, смарт-процессы), которые необходимо обработать.

фильтр битрикс24
Умный фильтр Битрикс24

2. Настройка бизнес-процесса

Создайте шаблон бизнес-процесса, включающий следующие действия:

  • Получение массива ID объектов для обработки.
  • Запись ID в множественную переменную.
  • Итерация по каждому элементу.
  • Запуск нужного бизнес-процесса на каждый объект.
  • Добавление паузы для избежания зависаний.

шаблон бизнес процессов битрикс24
Шаблон бизнес-процесса

Делимся примером настройки REST-запроса для получения списка сделок с помощью активити из маркетплейса:

{

  "entityTypeId": 136,

  "filter": {

    ">=createdTime": "2024-02-02T00:00:00",

    "<=createdTime": "{=System:Now}"

  },

  "select": ["ID"]

}

Далее для выборки ID в JSONPath указываем путь:

$.items.*.id

Результатом будет список ID, который нужно сохранить в множественную переменную.

3. Итерация и запуск бизнес-процессов

Теперь можно начать обработку объектов:

  • Используйте цикл-итератор по множественной переменной.
  • Запускайте нужный бизнес-процесс на каждый объект (через REST-запрос или стандартное активити запуска БП).
  • Добавьте счетчик итераций и механизм паузы после каждых 30–50 элементов.

4. Как реализовать паузу?

Чтобы избежать перегрузки или зависания, нужно добавлять паузу. Существует два варианта:

Вариант 1. Использовать готовое активити из маркетплейса, например: Bizzup: пауза

битрикс24 активити
Пример активити

Вариант 2. Создать своё REST-активити на PHP. Делимся примером от PHP-обработчика:

$seconds = filter_var($_REQUEST['properties']['StringParameter'], FILTER_VALIDATE_INT);

if ($seconds !== false && $seconds > 0) {

    sleep($seconds);

} else {

    die('Invalid input for sleep');

}

 

$params = [

    "auth" => filter_var($_REQUEST['auth']['access_token'], FILTER_SANITIZE_STRING),

    "event_token" => filter_var($_REQUEST['event_token'], FILTER_SANITIZE_STRING),

    "return_values" => [

        "ResultString" => "БП висел в паузе $seconds секунд",

    ]

];

 

$string_params = json_encode($params);

$back_url = filter_var($_REQUEST['auth']['client_endpoint'], FILTER_VALIDATE_URL) . 'bizproc.event.send';

 

$ch = curl_init($back_url);

curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $string_params);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);

curl_setopt($ch, CURLOPT_HEADER, false);

 

$res = curl_exec($ch);

if ($res === false) {

    die("cURL error: " . curl_error($ch));

}

curl_close($ch);

$encoded_res = json_decode($res, true);

В кастомном активити на самом портале задайте пользователя, из-под которого выполняется команда и время действия паузы в секундах.

Заключение

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

Универсальный список + REST-запросы + итератор + пауза = стабильное, масштабируемое и полностью автоматизированное решение для массовых задач в облачном Битрикс24.

Надеемся, статья поможет вам автоматизировать рутину и сосредоточиться на главном – развитии бизнеса, а не на ручной обработке данных.

Автор
Олег Груздев

Олег Груздев

Руководитель проектного офиса Битрикс24

Дата
17 июля 2025
Поделиться
Станислав Никин

Обсудим проект?

Станислав Никин

Менеджер развития клиентов

Этот сайт использует сервис веб-аналитики Яндекс Метрика, предоставляемый компанией ООО «ЯНДЕКС», 119021, Россия, Москва, ул. Л. Толстого, 16 (далее — Яндекс), счетчик «top.mail.ru» и cookie файлы.

Подробнее