Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Создать/изменить товарные позиции предложения crm.quote.productrows.set», проанализируем лучшие практики и покажем, как правильно использовать crm.quote.productrows.set в реальных задачах.
Создать/изменить товарные позиции предложения crm.quote.productrows.set
Тут может не хватать некоторых данных — дополним в ближайшее время
- нужны правки под стандарт написания
- не указаны типы параметров
- не указана обязательность параметров
- отсутствуют примеры (должно быть три примера — curl, js, php)
- отсутствует ответ в случае успеха
- отсутствует ответ в случае ошибки
> Scope: crm
>
> Кто может выполнять метод: любой пользователь
Метод crm.quote.productrows.set устанавливает (создаёт или обновляет) товарные позиции предложения.
| Параметр / Тип | Описание |
|---|---|
idunknown | Идентификатор предложения. |
rowsunknown | Товарные позиции — массив вида array(array("поле"=>"значение"[, ...])[, ...]), где «поле» может принимать значения из возвращаемых методом crm.productrow.fields. Товарные позиции предложения, существующие до момента вызова метода, будут заменены новыми. После сохранения будет произведён пересчёт суммы предложения. |
Практический пример и готовый код на PHP
- JS
try
{
const id = prompt("Введите ID");
const response = await $b24.callMethod(
"crm.quote.productrows.set",
{
id: id,
rows:
[
{ "PRODUCT_ID": 1, "PRICE": 100.00, "QUANTITY": 2 },
{ "PRODUCT_ID": 2, "PRICE": 200.00, "QUANTITY": 1 }
]
}
);
const result = response.getData().result;
if(result.error())
console.error(result.error());
else
console.info(result);
}
catch(error)
{
console.error('Error:', error);
}- PHP
$id = readline("Введите ID");
try {
$response = $b24Service
->core
->call(
'crm.quote.productrows.set',
[
'id' => $id,
'rows' => [
['PRODUCT_ID' => 1, 'PRICE' => 100.00, 'QUANTITY' => 2],
['PRODUCT_ID' => 2, 'PRICE' => 200.00, 'QUANTITY' => 1],
],
]
);
$result = $response
->getResponseData()
->getResult();
if ($result->error()) {
error_log($result->error());
} else {
echo 'Success: ' . print_r($result->data(), true);
}
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error setting quote product rows: ' . $e->getMessage();
}- BX24.js
var id = prompt("Введите ID");
BX24.callMethod(
"crm.quote.productrows.set",
{
id: id,
rows:
[
{ "PRODUCT_ID": 1, "PRICE": 100.00, "QUANTITY": 2 },
{ "PRODUCT_ID": 2, "PRICE": 200.00, "QUANTITY": 1 }
]
},
function(result)
{
if(result.error())
console.error(result.error());
else
console.info(result.data());
}
);💡 Экспертное мнение и рекомендации
Ключевые выводы по теме «Создать/изменить товарные позиции предложения crm.quote.productrows.set»:
Использование современных стандартов D7 при работе с crm.quote.productrows.set позволяет писать чистый, масштабируемый и безопасный код. Не забывайте обрабатывать исключения (try/catch) и проверять права доступа текущего пользователя перед выполнением критических операций.
Похожая задача в бизнесе?
Помогу автоматизировать процессы и внедрить ИИ
Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.
или на почту: gorandvas@yandex.ru