Юрий Павлюк

Цифровая трансформация продаж, комплексный интернет-маркетинг и внедрение Битрикс24

info@pavluk.online


Почему товары не появляются в сделке при работе через REST и как это исправить

При автоматизации сделок в Битрикс24 довольно часто возникает практическая задача: сформировать состав сделки автоматически, добавив в неё услуги или разовые позиции. Это может быть сопровождение, доставка, дополнительная работа или любой другой элемент, который нужен только в рамках конкретной сделки. Создавать такие позиции в каталоге товаров нецелесообразно — каталог быстро захламляется, а сами товары больше нигде не используются.

Именно для этого в REST предусмотрен метод crm.deal.productrows.set, который управляет товарными строками сделки напрямую и позволяет добавлять позиции без привязки к каталогу.

В чём возникла проблема

На практике пользователь корректно выбрал REST-метод, указал цену, количество и даже явно задал PRODUCT_ID = 0, чтобы товар не брался из каталога. Однако после выполнения робота в интерфейсе сделки товары не появлялись. При этом метод отрабатывал без явной ошибки, а лог приложения возвращал либо пустой результат, либо null.

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

Где кроется ограничение стандартного подхода

REST-роботы в Битрикс24 очень чувствительны к структуре параметров. Даже если JSON валиден с точки зрения синтаксиса, метод может просто «не увидеть» нужные данные, если они переданы под неверным ключом. В случае с crm.deal.productrows.set это особенно критично, потому что массив товарных строк должен называться строго определённым образом.

Частая ошибка — использовать интуитивные названия вроде productRows или другие варианты, ориентируясь на логику или примеры из кода. В результате метод выполняется, но фактически ничего не меняет в сделке.

Как была решена задача

В ходе разбора выяснилось, что ключевая ошибка заключалась именно в имени массива. REST-метод ожидает параметр rows, и только его. После того как структура запроса была приведена к ожидаемому формату, товары начали корректно появляться в сделке.

Важно понимать, что при PRODUCT_ID = 0 Битрикс24 воспринимает позицию как свободную товарную строку. В этом случае система ориентируется на PRODUCT_NAME, цену и количество, не создавая запись в каталоге. Такой подход полностью решает задачу разовых услуг и нестандартных позиций.

Для самопроверки удобно использовать связку из двух вызовов: сначала получать текущие товарные строки сделки, затем выполнять установку новых и повторно проверять результат. Это сразу показывает, применились ли изменения.

Логика передачи данных

Рабочая логика сводится к простой конструкции: передаётся идентификатор сделки и массив rows, внутри которого перечислены товарные строки. Каждая строка описывает одну позицию — с названием, ценой и количеством. Остальные поля подключаются только при необходимости и не являются обязательными.

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

В подобных сценариях удобно использовать REST API — методы РЕСТ Битрикс24 и JSON в роботах и БП, так как приложение позволяет быстро проверить структуру запроса, увидеть фактический ответ метода и сразу понять, на каком этапе данные перестают обрабатываться.

Итоговый результат

После исправления структуры JSON товары стали стабильно добавляться в сделки. При этом каталог остался нетронутым — новые позиции в нём не появлялись. Роботы перестали возвращать null, а состав сделки стал формироваться предсказуемо и прозрачно.

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

Вывод

Если при работе с crm.deal.productrows.set товары не появляются в сделке, причина почти всегда кроется не в правах или методе, а в структуре параметров. Ключ rows — критичен, и любое отклонение от ожидаемого формата делает вызов бесполезным.

При настройке REST-роботов и сложных JSON-запросов REST API — методы РЕСТ Битрикс24 и JSON в роботах и БП помогает избежать таких ситуаций на раннем этапе и быстрее довести автоматизацию до рабочего состояния.

Очень плохоПлохоСреднеХорошоОтлично! (1 оценок, среднее: 5,00 из 5)
Загрузка...