Убираю строки $http = new \Bitrix\Main\Web\HttpClient(); и $result = \Bitrix\Main\Web\Json::decode($json);
Ошибку не выдает, но белый экран. Кто пользовался этим примером, мне нужно получить список лидов по филтьру, не понимаю, как использовать пример и где ошибка.
<?php
require_once 'crest.php';
function getBigData(string $method = 'crm.company.list'){
/***********************************************/
$params = [
'order' => [
'ID' => 'ASC'
],
'filter' => [
'>UF_CRM_1594794891' => 0 // Внутренний номер магазина боьше нуля
],
'select' => [
'ID', // ID магазина
'UF_CRM_1594794891' // Внутренний номер магазина
],
'start' => 0
];
$result = CRest::call($method, $params); // Делаем запрос что бы понять сколько записей нам надо будет вытянуть
$total = $result['total']; // Всего записей в выборке
$calls = ceil($total / 50); // Сколько запросов надо сделать
$current_call = 0; // Номер текущего запроса
$call_count = 0; // Счетчик вызовов для соблюдения условия не больше 2-х запросов в секунду
sleep(1); // Делаем паузу перед основной работай
$arData = array(); // Массив для вызова callBatch
$result = array(); // Массив для результатов вызова callBatch
$totalResult = array(); // Массив с финальными данными
/***********Цыкл формирования пакета запросов и выполнение их *********/
do {
$current_call++;
$temp = [ // Собираем запрос
'method' => $method,
'params' => [
'order' => [
'ID' => 'ASC'
],
'filter' => [
'>UF_CRM_1594794891' => 0 // Внутренний номер магазина боьше нуля
],
'select' => [
'ID', // ID магазина
'UF_CRM_1594794891' // Внутренний номер магазина
],
'start' => ($current_call - 1) * 50
]
];
array_push($arData, $temp); // Сохраняем собранный запрос в массив параметров arData для передачи его в callBatch
if ((count($arData) == 50) || ($current_call == $calls)) { // Если в массиве параметров arData 50 запросов или это последний запрос
$call_count++; // При каждом вызове увеличиваем счетчик
if ($call_count == 2) { // Проверяем счетчик вызовов call_count
sleep(1); // Если да то делаем паузу 1 сек
$call_count = 0; // Сбрасываем счетчик
}
$result = CRest::callBatch($arData); // Вызываем callBatch
$resultTemp = $result['result']['result']; // Убираем лишнее вложение в массиве
foreach ($resultTemp as $company){ // Перебираем массив что бы
foreach ($company as $value) { // удобно было с ним работать в дальнейшем
array_push($totalResult, $value); // и сохраняем каждый елемент в totalResult
}
}
$arData = []; // Очишаем массив параметров arData для callBatch
}
} while ($current_call < $calls); // Проверяем условие что текущих вызовов меньще чем надо сделать всего
return $totalResult;
}
?>
Перед запуском скрипта не забудьте настроить crest.php Для этого в файле crest.php раскоментируйте строку C_REST_WEB_HOOK_URL = 'https://rest-api.bitrix24.com/rest/1/doutwqkjxgc3mgc1/' //url on creat Webhook и подставьте туда свой вебхук
Данный пример выгружает список компаний по фильтру, если Вам надо лиды то замените метод crm.company.list на crm.lead.list и настройте фильтр и список выгружаемых полей как вам надо.