При работе с REST-методами в роботах и бизнес-процессах Битрикс24 одна из самых частых задач – получить список найденных элементов, вытащить их ID и передать этот массив дальше, например в итератор. На практике проблема обычно выглядит так: метод находит записи, ответ приходит, но в нужное поле попадает не массив идентификаторов, а весь JSON-объект целиком, либо счётчик возвращает неожиданное значение. Именно с таким сценарием и столкнулся пользователь приложения REST API - методы РЕСТ Битрикс24 и JSON в роботах и БП: массив items приходил корректно, но значение count интерпретировалось не так, как ожидалось, а затем возникла вторая задача – передать в итератор не весь объект, а именно список ID.
В чём была проблема
Проблема оказалась не в самом REST-вызове и не в приложении как таковом. Пользователь получал ответ с массивом объектов вида {"items":[{"id":...}]}, но ожидал, что Битрикс24 автоматически преобразует этот ответ либо в число найденных элементов, либо в массив значений для последующей обработки. На практике этого не происходит: если JSONPath задан слишком общо, система берёт контейнерную структуру, а не конечные значения.
Отсюда и типовая ошибка в логике настройки: кажется, что приложение “не так возвращает данные”, хотя фактически оно всего лишь работает с ответом метода Битрикс24 и отдаёт ту структуру, которую вернул API. В переписке это проявилось сразу в двух сценариях: сначала пользователь видел, что result содержит массив элементов, но count не даёт ожидаемое количество, а затем при передаче результата в итератор вместо массива ID попадал весь объект {"items":[...]}.
Почему стандартные инструменты часто путают пользователя
У REST-роботов в Битрикс24 есть важное ограничение: они не “догадываются”, какую именно часть JSON-ответа нужно использовать в следующем шаге. Если в настройке указан путь до массива объектов, на выходе можно получить именно массив объектов. Если указан путь до корневого узла, в переменную уйдёт весь фрагмент ответа. Если же для итератора нужен список простых значений, путь должен вести не к items, а к конкретному полю внутри каждого элемента.
Именно поэтому один и тот же ответ API может по-разному работать в зависимости от того, куда дальше передаются данные. Для отображения общего результата бывает достаточно $.items[*], но для итератора, который должен пройтись по ID, нужен уже путь к конкретному свойству. В обсуждаемом случае пользователь отдельно уточнял, что простой результат итератор воспринимает некорректно, а при использовании общего пути в поле попадал весь блок {"items":[{"id":22477}]}.
Как решить задачу правильно
Ключевой момент – формировать JSONPath не по структуре “в целом”, а по конечной цели.
Если задача – просто получить список найденных объектов, обычно используют путь наподобие:
$.items[*]
Если нужно передать в следующий шаг именно идентификаторы, путь должен быть уже таким:
$.items[*].id
Именно этот вариант в итоге и дал корректный результат для блока “Результаты только для 1 JSONPath”, который затем можно использовать в итераторе. До этого пользователь пробовал более общие варианты и получал либо пустой результат, либо некорректную структуру для дальнейшей обработки. Финально рабочим решением оказался именно путь $.items[*].id.
Пример логики настройки
Ниже – типовой подход для случая, когда нужно найти элементы смарт-процесса по условию и передать их ID в итератор.
REST-метод:
crm.item.list
Параметры:
{
"entityTypeId": 1044,
"filter": {
"TITLE": "{=Variable:nazvanie}"
},
"select": [
"ID"
]
}
JSONPath для выборки объектов:
$.items[*]
JSONPath для выборки только ID:
$.items[*].id
Если в бизнес-процессе нужен именно массив идентификаторов, использовать следует второй вариант. Если подставить первый, в дальнейшую обработку уйдут объекты целиком, а не набор простых значений.
Что важно понимать про count и массивы
Отдельная тонкость касается count. Пользователи часто воспринимают это поле как “количество найденных записей”, но на практике нужно смотреть, что именно возвращает конкретный шаг робота и как Битрикс24 интерпретирует результат этого активити. Если система считает не количество элементов массива, а сам факт наличия результата, можно получить значение 1 даже тогда, когда внутри items лежит несколько записей. В такой ситуации надёжнее не полагаться на интуитивную трактовку полей, а проверять структуру ответа и отдельно настраивать JSONPath под нужный сценарий использования. Именно в этом и заключается практическая ценность приложения REST API - методы РЕСТ Битрикс24 и JSON в роботах и БП: оно не придумывает свою логику поверх Битрикс24, а помогает работать напрямую с методами платформы и их реальным ответом.
Почему полезно проверять настройки через нейросеть и апидокс
REST-методов в Битрикс24 много, их поведение зависит от сущности, версии метода и структуры ответа. Плюс в рабочих процессах легко ошибиться не в самом методе, а в деталях настройки: в названии поля, в фильтре, в пути JSONPath, в выборе того результата, который дальше передаётся в бизнес-процесс.
Поэтому для надёжной проверки удобно использовать связку из скрина настроек, апидокса Битрикс24 и нейросети. Такой подход особенно полезен в нестандартных сценариях, когда нужно быстро понять: проблема в API-методе, в структуре ответа или в том, как именно заполнены поля робота. В переписке этот подход также был прямо обозначен как практический способ перепроверки конфигурации, когда нужно убедиться, что робот настроен корректно.
Результат
После корректировки JSONPath пользователь получил именно тот формат, который требовался для дальнейшей логики: путь $.items[*].id корректно отработал в блоке “Результаты только для 1 JSONPath” и позволил использовать найденные ID дальше по процессу. То есть задача решилась не заменой метода и не доработкой приложения, а точной настройкой извлечения данных из ответа API.
Вывод
Если в Битрикс24 REST-робот “не выводит нужные данные”, чаще всего причина не в самом приложении и не в методе РЕСТ, а в том, что JSONPath указывает не на конечное значение, а на промежуточный узел структуры ответа. Для итератора почти всегда нужен не общий массив items, а конкретное поле внутри каждого элемента – например, $.items[*].id.
Это важный практический вывод для всех, кто ищет, как получить массив ID в Битрикс24, как передать результат REST-метода в итератор, как использовать JSONPath в роботах Битрикс24 и почему count может показывать не то, что ожидается. Когда логика ответа API понятна, настройка становится предсказуемой, а автоматизация – стабильной.
