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

Зачем нужна массовая обработка?
Под массовой обработкой понимается автоматическое выполнение одного и того же действия над большим количеством CRM-объектов. Например, нужно изменить стадию у 500 сделок, запустить повторный бизнес-процесс для 1000 лидов или обновить определённое поле у всех клиентов, зарегистрированных за последний месяц.
Многие пользователи Битрикс24 сталкиваются с задачами, требующими массовой обработки данных:
- Обновление лидов.
- Запуск процессов по сделкам.
- Изменение атрибутов клиентов.
- Работа с универсальными списками.
- Взаимодействие с файлами на диске.
Если количество записей невелико, можно обойтись умными сценариями (см. официальную документацию). Но что делать, когда таких записей тысячи, и каждую нужно обработать?
Решение – запуск бизнес-процессов через универсальный список, где заранее формируется массив ID объектов для дальнейшей автоматической обработки.
Также мы разработали модуль для Битрикс24, который позволяет удалить и объединить дубли контактов и привести в порядок клиентскую базу в 500 000 записей всего за 2,5 – 3 часа.
Как реализовать: пошаговая инструкция
1. Создание универсального списка
Создайте универсальный список, который будет использоваться в роли очереди обработки. В него поместите ID объектов CRM (например, смарт-процессы), которые необходимо обработать.

Умный фильтр Битрикс24
2. Настройка бизнес-процесса
Создайте шаблон бизнес-процесса, включающий следующие действия:
- Получение массива ID объектов для обработки.
- Запись ID в множественную переменную.
- Итерация по каждому элементу.
- Запуск нужного бизнес-процесса на каждый объект.
- Добавление паузы для избежания зависаний.

Шаблон бизнес-процесса
Делимся примером настройки REST-запроса для получения списка сделок с помощью активити из маркетплейса:
{
"entityTypeId": 136,
"filter": {
">=createdTime": "2024-02-02T00:00:00",
"<=createdTime": "{=System:Now}"
},
"select": ["ID"]
}
Далее для выборки ID в JSONPath указываем путь:
Результатом будет список ID, который нужно сохранить в множественную переменную.
3. Итерация и запуск бизнес-процессов
Теперь можно начать обработку объектов:
- Используйте цикл-итератор по множественной переменной.
- Запускайте нужный бизнес-процесс на каждый объект (через REST-запрос или стандартное активити запуска БП).
- Добавьте счетчик итераций и механизм паузы после каждых 30–50 элементов.
4. Как реализовать паузу?
Чтобы избежать перегрузки или зависания, нужно добавлять паузу. Существует два варианта:
Вариант 1. Использовать готовое активити из маркетплейса, например: Bizzup: пауза

Пример активити
Вариант 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
