Add Product Row to CRM Object crm.item.productrow.add
Scope:
crmWho can execute the method: requires access permission to modify the CRM object to which the product row is being added.
This method adds a product row to a CRM object.
Method Parameters
Required parameters are marked with *
|
Name |
Description |
|
fields* |
Object containing field values for adding the product row to the CRM object |
Parameter fields
|
Name |
Description |
|
ownerId* |
Identifier of the CRM object |
|
ownerType* |
Identifier of the |
|
productId |
Identifier of the product from the catalog |
|
productName |
Name of the product in the product row. If not provided, but |
|
price |
Price per unit of the product row, including discounts and taxes |
|
quantity |
Quantity of the product. Default is 1 |
|
discountTypeId |
Type of discount. Possible values:
|
|
discountRate |
Discount value in percentage (if using the percentage discount type) |
|
discountSum |
Absolute discount value (if using the absolute discount type) |
|
taxRate |
Tax rate in percentage |
|
taxIncluded |
Indicator of whether the tax is included in the price. Possible values:
|
|
measureCode |
Unit of measure code. If not provided and |
|
sort |
Sorting |
Code Examples
How to Use Examples in Documentation
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"fields":{"ownerId":13142,"ownerType":"D","productId":9621,"price":80000,"quantity":2,"discountTypeId":2,"discountRate":20,"taxRate":20,"taxIncluded":"Y","measureCode":796,"sort":10}}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/crm.item.productrow.add
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"fields":{"ownerId":13142,"ownerType":"D","productId":9621,"price":80000,"quantity":2,"discountTypeId":2,"discountRate":20,"taxRate":20,"taxIncluded":"Y","measureCode":796,"sort":10},"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/crm.item.productrow.add
try
{
const response = await $b24.callMethod(
'crm.item.productrow.add', {
fields: {
ownerId: 13142,
ownerType: 'D',
productId: 9621,
price: 80000.000000,
quantity: 2,
discountTypeId: 2,
discountRate: 20,
taxRate: 20,
taxIncluded: 'Y',
measureCode: 796,
sort: 10,
},
}
);
const result = response.getData().result;
console.log(result);
}
catch( error )
{
console.error(error);
}
try {
$response = $b24Service
->core
->call(
'crm.item.productrow.add',
[
'fields' => [
'ownerId' => 13142,
'ownerType' => 'D',
'productId' => 9621,
'price' => 80000.000000,
'quantity' => 2,
'discountTypeId' => 2,
'discountRate' => 20,
'taxRate' => 20,
'taxIncluded' => 'Y',
'measureCode' => 796,
'sort' => 10,
],
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error adding product row: ' . $e->getMessage();
}
BX24.callMethod(
'crm.item.productrow.add', {
fields: {
ownerId: 13142,
ownerType: 'D',
productId: 9621,
price: 80000.000000,
quantity: 2,
discountTypeId: 2,
discountRate: 20,
taxRate: 20,
taxIncluded: 'Y',
measureCode: 796,
sort: 10,
},
},
function(result) {
if (result.error()) {
console.error(result.error());
} else {
console.log(result.data());
}
}
);
require_once('crest.php');
$result = CRest::call(
'crm.item.productrow.add',
[
'fields' => [
'ownerId' => 13142,
'ownerType' => 'D',
'productId' => 9621,
'price' => 80000.000000,
'quantity' => 2,
'discountTypeId' => 2,
'discountRate' => 20,
'taxRate' => 20,
'taxIncluded' => 'Y',
'measureCode' => 796,
'sort' => 10,
]
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';
Successful Response
HTTP Status: 200
{
"result":{
"productRow":{
"id":17647,
"ownerId":13142,
"ownerType":"D",
"productId":9621,
"price":80000,
"quantity":2,
"discountTypeId":2,
"discountRate":20,
"taxRate":20,
"taxIncluded":"Y",
"measureCode":796,
"sort":10,
"type":4,
"productName":"iphone 14",
"priceAccount":80000,
"priceExclusive":66666.67,
"priceNetto":83333.34,
"priceBrutto":100000.01,
"discountSum":16666.67,
"customized":"Y",
"measureName":"pcs",
"xmlId":""
}
},
"time":{
"start":1716887721.77879,
"finish":1716887723.259695,
"duration":1.4809050559997559,
"processing":1.2986550331115723,
"date_start":"2024-05-28T12:15:21+02:00",
"date_finish":"2024-05-28T12:15:23+02:00"
}
}
Returned Data
|
Name |
Description |
|
result |
Root element of the response |
|
productRow |
Object containing information about the added product row |
|
time |
Information about the request execution time |
Error Handling
HTTP Status: 400
{
"error":"OWNER_NOT_FOUND",
"error_description":"Owner was not found"
}
|
Name |
Description |
|
error |
String error code. It may consist of digits, Latin letters, and underscores |
|
error_description |
Textual description of the error. The description is not intended to be shown to the end user in its raw form |
Possible Error Codes
|
Code |
Description |
|
|
Working with this type of objects is not supported |
|
|
Access denied |
|
|
The provided CRM object was not found |
|
|
Required parameters were not provided |
|
|
Other errors (e.g., fatal errors) |
HTTP Status: 20x, 40x, 50x
The errors described below may occur when calling any method.
|
Status |
Code |
Description |
|
|
|
An internal server error has occurred, please contact the server administrator or Bitrix24 technical support |
|
|
|
An internal server error has occurred, please contact the server administrator or Bitrix24 technical support |
|
|
|
The request intensity limit has been exceeded |
|
|
|
The current method is not allowed to be called using batch |
|
|
|
The maximum length of parameters passed to the batch method has been exceeded |
|
|
|
Invalid access token or webhook code |
|
|
|
The methods must be called using the HTTPS protocol |
|
|
|
The REST API is blocked due to overload. This is a manual individual block, to remove it you need to contact Bitrix24 technical support |
|
|
|
The REST API is available only on commercial plans |
|
|
|
The user whose access token or webhook was used to call the method lacks permissions |
|
|
|
The manifest is not available |
|
|
|
The request requires higher privileges than those provided by the webhook token |
|
|
|
The provided access token has expired |
|
|
|
The user does not have access to the application. This means that the application is installed, but the account administrator has allowed access to this application only for specific users |
|
|
|
The public part of the site is closed. To open the public part of the site on an on-premise installation, disable the option "Temporary closure of the public part of the site". Path to the setting: Desktop > Settings > Product Settings > Module Settings > Main Module > Temporary closure of the public part of the site |
Continue Learning
- Product Items
- Update the product row of a CRM object crm.item.productrow.update
- Get the list of fields for product rows crm.item.productrow.fields
- Get information about a product item by id crm.item.productrow.get
- Save Product Row of CRM Object crm.item.productrow.set
- Get Unpaid Product Rows of CRM Object crm.item.productrow.getAvailableForPayment
- Get product rows of the CRM object crm.item.productrow.list
- Delete product row from CRM object crm.item.productrow.delete