<?php
use \Bitrix24\CRM\Contact as B24Contact;
use \Bitrix24\Presets\CRM\Contact\Fields as B24ContactFields;
require_once __DIR__.'/vendor/autoload.php';
// init lib
$obB24App = new \Bitrix24\Bitrix24(false, $log);
// $obB24App->setApplicationScope(array("crm", "users"));
$obB24App->setApplicationId("appid");
$obB24App->setApplicationSecret("appsecret");
// set user-specific settings
$obB24App->setDomain($_REQUEST['domain']);
$obB24App->setMemberId($_REQUEST['memberid']);
$obB24App->setAccessToken($_REQUEST['auth']);
// $obB24App->setRefreshToken($arParams['REFRESH_ID']);
$arContacts = [];
$obB24App->addBatchCall('crm.contact.list', [
'select' => ['ID', 'NAME', 'LAST_NAME'], 'order' => ['ID' => 'ASC'], 'filter' => ["ID" => $arContactsID]
], function ($result) use ($obB24App, &$arContacts) {
// save first page
foreach ($result['result'] as $contact) {
$arContacts[$contact['ID']] = $contact;
}
// add calls for subsequent pages
for ($i = $result['next']; $i < $result['total']; $i += $result['next']) {
$obB24App->addBatchCall('crm.contact.list', [
'start' => $i, 'select' => ['ID', 'NAME', 'LAST_NAME'], 'order' => ['ID' => 'ASC'], 'filter' => ["ID" => $arContactsID]
], function ($result) use (&$arContacts) {
// save subsequent page
foreach ($result['result'] as $contact) {
$arContacts[$contact['ID']] = $contact;
}
});
}
});
$obB24App->processBatchCalls();
print_r($arContacts);
bitrix24 rest api mesilov sdk batch get contacts example
Пример batch запроса для выборки полного списка контактов CRM. Если вам требуется собрать все контакты црм битрикс24, а их у вас больше 50, смело используйте метод batch. Пример представлен на основе sdk для битрикс24 от Месилова Максима. Ссылка на репозиторий: https://github.com/mesilov/bitrix24-php-sdk. Устанавливаем и подключаем sdk, заполняем данные приложения б24: id, secret, токены, домен. Далее выполняем батч запрос. Преимущество батч в том, что методом батч мы собираем все нужные запросы в пачку и отправляем их как один запрос. Давайте посчитаем, у нас 900 контактов, по простому мы бы выполнили 900/50 = 18 запросов, вместо этого батч выполнить один запрос вместо 18. В батч помечащется так же 50 запросов, то есть если контактов больше 2500, необходимо больше 1 батч запроса. Разница во времени выполнения таких запросов большая. Пользуйтесь на здоровье.