Получить список элементов из Битрикс24 больше 50

Проблема в том, что Битрикс24 возвращает по апи только первые 50 элементов. Если нам необходимо для обработки получить массив с полным списком элементов в котором содержится больше элементов чем 50 , то в запросе необходимо передавать параметр start, выполняя несколько запросов. 

В данной статье я напишу функцию с помощью которой можно будет получить полный массив со всеми записями и не важно 50 всего у вас записей или больше.

Пример обычного запроса описанного в документации Битрикс24 :

$res = $CB24->method($_REQUEST,'crm.contact.list.json',array(
        "select" => array("ID", "LAST_NAME", "NAME"),
        "filter" => array("ID" => $arContactsID), 
    )
);

Данным запросом вы получите массив в котором будут содержаться 50 первых элементов. Данный запрос нас устроит когда у нас всего 50 элементов, а что если у нас больше 50 элементов содержится в битрикс24? Как нам получить все элементы тогда?  Тогда нам необходимо делать несколько запросов в котором уже будет добавлен параметр start.

Пример запроса с параметром start:

$res_1 = $CB24->method($_REQUEST,'crm.contact.list.json',array(
        "select" => array("ID", "LAST_NAME", "NAME"),
        "filter" => array("ID" => $arContactsID), 
        'start' => 0
    )
);

Где значение параметра start = 0 означает что в массиве $res будет содержаться первые 50 элементов. Если мы хотим получить вторые 50 элементов, необходимо отправить другой запрос где мы изменим значение параметра start с 0 на 50.
Параметром start мы указываем какие следующие 50 элементов мы достанем из Битрикс24. 

Пример запроса с получением записей начиная с 50-й до 100:

$res_2 = $CB24->method($_REQUEST,'crm.contact.list.json',array(
        "select" => array("ID", "LAST_NAME", "NAME"),
        "filter" => array("ID" => $arContactsID), 
        'start' => 50
    )
);

И так каждый раз, если мы хотим получить следующие 50 записей от 100 до 150, то нам необходимо добавить к уже имеющему параметру start  еще 50, т.е. тогда значение start = 100.

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

Пример функции getListMass для сбора всех записей из Битрикс24:

function getListMass(){
     //достаем контакты с облака
     $res = $CB24->method($_REQUEST,'crm.contact.list.json',array(
             "select" => array("ID", "LAST_NAME", "NAME"),
             "filter" => array("ID" => $arContactsID),
         )
     );
     $arContacts = $res['result'];

     if( $res['total'] > 50 ){
         $i = 50;
         while( $i < $res['total'] ){
             $res_x = $CB24->method($_REQUEST,'crm.contact.list.json',array(
                     "select" => array("ID", "LAST_NAME", "NAME"),
                     "filter" => array("ID" => $arContactsID),
                     'start'=>$i
                 )
             );
             $arContacts = array_merge($arContacts,$res_x['result']);
             $i = $i + 50;
         }
     }
 }

Загрузка комментариев...