Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Получить товары сделки crm.deal.productrows.get». Мы подготовили подробный разбор принципов работы и развернутые примеры интеграции.
Получить товары сделки crm.deal.productrows.get
> Scope: crm
>
> Кто может выполнять метод: пользователь с правом «чтения» сделки
Метод crm.deal.productrows.get возвращает товарные позиции сделки.
Названиетип | Описание |
|---|---|
*id^^integer | Идентификатор сделки. Можно получить с помощью метода получения списка сделок: crm.deal.list или при создании сделки: crm.deal.add |
Примеры кода
Получить товарные позиции сделки с id = 5
- cURL (Webhook)
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"id":5}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/crm.deal.productrows.get- cURL (OAuth)
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"id":5,"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/crm.deal.productrows.get- JS
try
{
const response = await $b24.callMethod(
'crm.deal.productrows.get',
{
id: 5,
}
);
const result = response.getData().result;
result.error()
? console.error(result.error())
: console.info(result)
;
}
catch( error )
{
console.error('Error:', error);
}- PHP
try {
$response = $b24Service
->core
->call(
'crm.deal.productrows.get',
[
'id' => 5,
]
);
$result = $response
->getResponseData()
->getResult();
if ($result->error()) {
echo 'Error: ' . $result->error();
} else {
echo 'Data: ' . print_r($result->data(), true);
}
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error getting deal product rows: ' . $e->getMessage();
}- BX24.js
BX24.callMethod(
'crm.deal.productrows.get',
{
id: 5,
},
(result) => {
result.error()
? console.error(result.error())
: console.info(result.data())
;
},
);- PHP CRest
require_once('crest.php');
$result = CRest::call(
'crm.deal.productrows.get',
[
'id' => 5
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';Обработка ответа
HTTP-статус: 200
{
"result": [
{
"ID": "5",
"OWNER_ID": "5",
"OWNER_TYPE": "D",
"PRODUCT_ID": 450,
"PRODUCT_NAME": "Товар #2",
"ORIGINAL_PRODUCT_NAME": "Товар #2",
"PRODUCT_DESCRIPTION": null,
"PRICE": 899.1,
"PRICE_EXCLUSIVE": 899.1,
"PRICE_NETTO": 999,
"PRICE_BRUTTO": 999,
"PRICE_ACCOUNT": "899.10",
"QUANTITY": 1,
"DISCOUNT_TYPE_ID": 2,
"DISCOUNT_RATE": 10,
"DISCOUNT_SUM": 99.9,
"TAX_RATE": null,
"TAX_INCLUDED": "Y",
"CUSTOMIZED": "Y",
"MEASURE_CODE": 796,
"MEASURE_NAME": "шт",
"SORT": 10,
"XML_ID": "sale_basket_651",
"TYPE": 1,
"STORE_ID": 0,
"RESERVE_ID": 31,
"DATE_RESERVE_END": "26.12.2024",
"RESERVE_QUANTITY": 1
},
{
"ID": "4",
"OWNER_ID": "5",
"OWNER_TYPE": "D",
"PRODUCT_ID": 449,
"PRODUCT_NAME": "Товар #1",
"ORIGINAL_PRODUCT_NAME": "Товар #1",
"PRODUCT_DESCRIPTION": "Детальное описание",
"PRICE": 100,
"PRICE_EXCLUSIVE": 100,
"PRICE_NETTO": 100,
"PRICE_BRUTTO": 100,
"PRICE_ACCOUNT": "100.00",
"QUANTITY": 1,
"DISCOUNT_TYPE_ID": 2,
"DISCOUNT_RATE": 0,
"DISCOUNT_SUM": 0,
"TAX_RATE": null,
"TAX_INCLUDED": "Y",
"CUSTOMIZED": "Y",
"MEASURE_CODE": 796,
"MEASURE_NAME": "шт",
"SORT": 20,
"XML_ID": "sale_basket_650",
"TYPE": 1,
"STORE_ID": 1,
"RESERVE_ID": 30,
"DATE_RESERVE_END": "26.12.2024",
"RESERVE_QUANTITY": 1
}
],
"time": {
"start": 1734969122.936213,
"finish": 1734969123.586089,
"duration": 0.6498758792877197,
"processing": 0.14046597480773926,
"date_start": "2024-12-23T17:52:02+02:00",
"date_finish": "2024-12-23T17:52:03+02:00",
"operating": 0
}
}Возвращаемые данные
Названиетип | Описание |
|---|---|
resultproductrow[] | Корневой элемент ответа, содержащий массив товарных позиций сделки |
timetime | Информация о времени выполнения запроса |
Тип productrow {#productrow}
Названиетип | Описание |
|---|---|
IDinteger | Идентификатор товарной позиции |
OWNER_IDinteger | Идентификатор сущности, к которой привязан товар. Для данного метода всегда будет равен id сделки |
OWNER_TYPEstring | Строковый идентификатор типа сущности, к которому привязан товар. Для данного метода всегда будет равен D |
PRODUCT_IDinteger | Идентификатор товара в каталоге. 0 если не из каталогаДля получения более подробной информации о товаре используйте |
PRODUCT_NAMEstring | Наименование товарной позиции |
ORIGINAL_PRODUCT_NAMEstring | Наименование товарной позиции в каталоге |
PRODUCT_DESCRIPTIONstring | Описание товарной позиции |
PRICEdouble | Итоговая стоимость товара за единицу |
PRICE_EXCLUSIVEdouble | Стоимость за единицу с учетом скидок, без учета налогов |
PRICE_NETTOdouble | Стоимость за единицу без учета скидок и налогов |
PRICE_BRUTTOdouble | Стоимость за единицу без учета скидок, но с учетом налогов |
PRICE_ACCOUNTstring | Стоимость товара в «валюте отчетов» |
QUANTITYinteger | Количество единиц товара |
DISCOUNT_TYPE_IDinteger | Тип скидки Возможные типы: — 1 — Абсолютный— 2 — Процентный |
DISCOUNT_RATEdouble | Значение скидки в процентах (если используется тип скидки с процентным значением) |
DISCOUNT_SUMdouble | Абсолютное значение скидки (если используется тип скидки с абсолютным значением) |
TAX_RATEdouble | Ставка налога в процентах |
TAX_INCLUDEDboolean | Индикатор того, включен ли налог в стоимость Возможные значения: — Y – налог включен— N – налог не включен |
CUSTOMIZEDboolean | Изменен (Устаревшее) Возможные значения: — Y — Да— N — Нет |
MEASURE_CODEcatalog_measure.code | Код единицы измерения |
MEASURE_NAMEstring | Текстовое представление единицы измерения (например — шт, кг, м, л и т.д.) |
SORTinteger | Сортировка |
XML_IDstring | Внешний код товара |
TYPEinteger | Тип товара Возможные значения: — 1 — Простой товар— 4 — Торговое предложение/вариация— 7 — Услуга |
STORE_IDinteger | Идентификатор склада. Для получения подробной информации о складе используйте catalog.store.get |
RESERVE_IDinteger | Идентификатор резерва |
DATE_RESERVE_ENDdate | Дата окончания резервации |
RESERVE_QUANTITYinteger | Количество зарезервированных единиц товара |
Обработка ошибок
HTTP-статус: 400
{
"error": "",
"error_description": "The parameter id is invalid or not defined."
}Возможные коды ошибок
| Описание | Значение** |
|---|---|
| The parameter id is invalid or not defined. | В параметр id передано некорректное значение |
| Access denied | У пользователя нет прав на «чтение» сделки |
| Not found | Сделка с переданным id не найдена |
- [](./crm-deal-productrows-set)
💡 Экспертное мнение и рекомендации
Советы эксперта по интеграции:
- Всегда используйте кэширование при частых запросах к crm.deal.productrows.get, чтобы разгрузить базу данных.
- Соблюдайте стандарты PSR при написании обработчиков для «Получить товары сделки crm.deal.productrows.get».
- Регулярно проводите аудит производительности системы с помощью встроенного монитора 1С-Битрикс.
Похожая задача в бизнесе?
Помогу автоматизировать процессы и внедрить ИИ
Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.
или на почту: gorandvas@yandex.ru