divanus
@divanus
junior php bitrix python

Как в цикле сделать запрос к rest api битрикс24?

Столкнулся с проблемой.
Есть вебинары битрикс на js по запросам к rest api битрикс24. Но, я ни в зуб ногой по JS.
Как сделать запрос rest api с циклом, чтобы получить в массив за нужный период сделки и комментарии к ним?
результат выдает по 50 ответов. Просто строчка через помошники POST запросов - виден приходящий JSON.
Но, как это всё обернуть ? Всю голову сломал. И ведь всё это еще надо поместить в массив и загнать уже через компонент как-то в другой битрикс :)

Вторую неделю (или уже третью) ломаю голову, перечитываю, пересматриваю вебинары. Ничего непонятно.
  • Вопрос задан
  • 2107 просмотров
Пригласить эксперта
Ответы на вопрос 2
@kulgan
Постараюсь ответить на то, что понял:
Больше 50 в одном запросе не получить никак не получить - ограничение api. Чтобы получить остальные значения посмотрим в официальную доку(сделки). Увидим такой код
if(result.more())
                result.next();

, он и получает оставшиеся сделки. Если вставить его как в примере из доки, то он будет получать сделки, пока не получит все.
var allDeals = []; 
// тут код запроса, но для краткости начнём с callback кода 
function(result) 
    {
        if(result.error())
            console.error(result.error());
        else
        {
            for(let i = 0; i < result.data().length; i++){   //этим кодом вставляем полученные сделки в массив всех 
                 allDeals.push(result.data()[i]);               //полученных сделок
            }		
            if(result.more())
                result.next();						
        }
    }


Если сделок в ответе постоянно 100+, то лучше разобраться в batch запросах
Ответ написан
@MrHyde
Вы можете использовать библиотеку https://github.com/2BAD/bitrix где уже оптимизированы процессы получения данных

Достаточно будет пару строк
import Bitrix from '@2bad/bitrix'

const bitrix = Bitrix('https://PORTAL_NAME.bitrix24.ru/rest', 'ACCESS_TOKEN')

// Получить сделку с ID: 77
bitrix.deals.get('77')
  .then(({ result }) => {
    // Get typed payload
    const { TITLE } = result // string
    console.log(TITLE)
  })
  .catch(console.error)

// Получить все сделки и их пользовательские поля
bitrix.deals.list({ select: ["*", "UF_*"] })
  .then(({ result }) => {
    const titles = result.map((e) => e.TITLE)
    console.log(titles)
  })
  .catch(console.error)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы