# Добавление товара в смарт-процесс или счёт Битрикс24 через REST

> Три шага, чтобы добавить товарную позицию в смарт-процесс или новый счёт Битрикс24 через REST: ownerType из crm.enum.ownertype, поля и crm.item.productrow.add.

- Авторство: Автор: Максим [human]
- Текст написал Максим. ИИ исправил только опечатки и пунктуацию, смысл и стиль автора не менялись.
- Опубликовано: 2022-02-19
- Теги: Битрикс24, REST API
- Адрес: https://dgtor.blog/posts/rest-productrow-smart-process/

## Коротко порядок действий следующий

1. Находим буквенный идентификатор СП через метод `crm.enum.ownertype`.
2. Получаем список полей товарных позиций через `crm.item.productrow.fields`.
3. Добавляем товарную позицию через `crm.item.productrow.add`.

_В Битрикс24, как в «Зоне» у Стругацких, самый короткий путь — не прямая._

## Шаг 1. Находим ownerType

Чтобы добавить товар к Счёту (под капотом это смарт-процесс), кроме полей товара нам понадобятся два значения: **ownerType** и **ownerId**.

- **ownerType** — буквенный идентификатор смарт-процесса;
- **ownerId** — ID элемента смарт-процесса.

Со стандартными сущностями всё просто, достаточно посмотреть в документации «Константы CRM» значение в столбце «Краткий символьный код» напротив нужной сущности. Так, для сделки символьный код «D», а для предложения — «Q».

С кастомными сущностями используем метод `crm.enum.ownertype`.

Обращаемся к нему через вебхук в формате (рекомендую через Firefox):

```text
https://<портал>/rest/<юзер>/<секретный код>/crm.enum.ownertype
```

Получите ответ вида:

![Ответ метода crm.enum.ownertype для смарт-процесса «Умные сценарии»: ID 159, SYMBOL_CODE DYNAMIC_159, SYMBOL_CODE_SHORT T9f](./ownertype-response.png)

Ответ от вебхука на метод `crm.enum.ownertype`.

Нас интересует `SYMBOL_CODE_SHORT` — **"T9f"**.

## Шаг 2. Получаем список полей товарных позиций

Для этого обратимся к методу `crm.item.productrow.fields` через вебхук (рекомендую через Firefox):

```text
https://<портал>/rest/<юзер>/<секретный код>/crm.item.productrow.fields
```

Обязательные поля будут:

- **ownerId** — ID элемента;
- **ownerType** — буквенный код, получили ранее;
- **productId** — ID товара, берём из каталога;
- **price** — цена;
- **quantity** — количество.

## Шаг 3. Добавление товарной позиции

Я буду использовать тестовую среду из приложения «РЕСТ Действия».

![Запрос crm.item.productrow.add в приложении «РЕСТ Действия»: ownerId 4, ownerType T9f, productId 488, price 6000, quantity 1](./productrow-add-request.png)

Сформированный запрос.

![Товарная позиция «Корректировка воронки» за 6000 рублей в карточке элемента смарт-процесса](./productrow-added.png)

Добавленный товар.

Таким образом я создал товар в смарт-процессе.

## Ссылки на документацию и приложение

- [Типы данных и структура объектов в REST API CRM](https://apidocs.bitrix24.ru/api-reference/crm/data-types.html#object_type)
- [crm.enum.ownertype](https://apidocs.bitrix24.ru/api-reference/crm/auxiliary/enum/crm-enum-owner-type.html)
- [crm.item.productrow.fields](https://apidocs.bitrix24.ru/api-reference/crm/universal/product-rows/crm-item-productrow-fields)
- [«РЕСТ Действия» в Битрикс24 Маркете](https://www.bitrix24.ru/apps/app/dgtor.rest_deystviya/)
