← К заметкам

Заметки

Почему limit=100 не увеличивает страницу crm.deal.list

У crm.deal.list размер страницы — 50 записей. Добавление limit=100 в URL его не увеличивает: такого параметра у метода нет.

При прямых HTTP-запросах передавайте в start значение next из предыдущего ответа. Не вычисляйте следующий шаг по количеству полученных элементов. Когда next отсутствует, обход закончен.

В браузерном приложении с уже инициализированным BX24.js страницы можно обойти так:

BX24.callMethod('crm.deal.list', {
    order: { ID: 'ASC' },
    select: ['ID', 'TITLE']
}, function (result) {
    if (result.error()) {
        console.error(result.error());
        return;
    }

    for (const deal of result.data()) {
        console.log(deal.ID, deal.TITLE);
    }

    if (result.more()) {
        result.next();
    }
});

В примере записи обрабатываются по мере получения. Если нужен один массив, есть пример накопления результата в Promise. Использовать собранный массив нужно после последней страницы.

start: -1 в поддерживающих его методах отключает подсчёт общего количества. Он не превращает ответ в неограниченный список. Для выгрузки по растущему ID это отдельный алгоритм: сортировка по ID, фильтр больше последнего обработанного ID и последовательные запросы.

Развитие crm.deal.list остановлено; для новой интеграции используйте crm.item.list с entityTypeId: 2. У него также есть постраничная выдача.

Документация: crm.deal.list; Выгрузка больших объёмов.