Как не «захлебнуться» в массовой обработке объектов и данных в 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.

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

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

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

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

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

Мы используем файлы cookie и программы веб-аналитики для работы сайта. Нажимая «Принять», вы даете согласие в соответствии с Политикой обработки персональных данных . Запретить обработку вы можете через браузер.

Подробнее