Введение
При работе с интеграцией 1С и Битрикс24 часто возникает необходимость выгрузить все сделки из CRM. API Bitrix24 предоставляет метод LIST, который возвращает данные по 50 записей за один запрос. Чтобы получить полный набор данных, необходимо реализовать рекурсивный вызов этого метода.
Проблема
Метод LIST ограничен количеством возвращаемых позиций. Если в CRM более 50 сделок, то часть данных останется недоступной без дополнительной логики.
Решение: рекурсивный вызов LIST
Основная идея состоит в том, чтобы последовательно запрашивать страницы результатов, пока не будет получено все количество записей. В каждом запросе указываем параметр start, который определяет смещение относительно начала списка.
function fetchAllDeals(start = 0, allDeals = []) {
const response = bitrix24.callMethod('crm.deal.list', { start, filter: {}, order: { ID: 'ASC' } });
const deals = response.result;
allDeals = allDeals.concat(deals);
if (deals.length === 50) {
// Есть ещё данные – продолжаем рекурсию
return fetchAllDeals(start + 50, allDeals);
}
return allDeals;
}
В примере выше bitrix24.callMethod – это абстракция, которая отправляет запрос к API. Функция fetchAllDeals вызывается один раз и возвращает массив всех сделок.
Практическая реализация в проекте
В одном из проектов по интеграции 1С Бухгалтерия с Битрикс24 я использовал такой подход для сверки сделок. Благодаря рекурсии удалось получить полный набор данных без потери информации и без превышения лимитов API.
Заключение
Рекурсивный вызов метода LIST – простое и надёжное решение для обхода ограничения в 50 записей. Это позволяет интеграторам 1С получать полный объём данных из Битрикс24 и синхронизировать их с бухгалтерской системой.
Хотите узнать больше о полном курсе интеграции 1С и Битрикс24? Купить курс.
