Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Изменить заказ sale.order.update». Вы узнаете экспертные методики работы с sale.order.update и научитесь избегать типичных ошибок начинающих разработчиков.
Изменить заказ sale.order.update
> Scope: sale
>
> Кто может выполнять метод: администратор
Метод sale.order.update обновляет поля заказа.
Параметры метода
Названиетип | Описание |
|---|---|
idsale_order.id | Идентификатор заказа |
fieldsobject | Значения полей для изменения заказа |
Параметр fields
Названиетип | Описание |
|---|---|
pricedouble | Цена |
discountValuedouble | Значение скидки |
statusIdsale_status.id | Идентификатор статуса заказа |
empStatusIduser.id | Идентификатор пользователя, изменившего статус заказа |
dateInsertdatetime | Дата создания заказа |
markedstring | Флаг маркировки. Признак того, является ли отгрузка отмеченной как проблемная. Значение Y ставится автоматически, если при сохранении произошла ошибка.— По умолчанию устанавливается |
empMarkedIduser.id | Идентификатор пользователя, поставившего маркировку |
reasonMarkedstring | Причина, по которой заказ был промаркирован |
userDescriptionstring | Комментарий покупателя к заказу |
additionalInfostring | Устаревший. Дополнительная информация |
commentsstring | Комментарий менеджера к заказу |
responsibleIduser.id | Идентификатор пользователя, ответственного за заказ |
recurringIdinteger | Идентификатор продления подписки |
lockedByuser.id | Актуально только для коробочной версии. Идентификатор пользователя, заблокировавшего заказ. Заказ блокируется в административной панели, когда пользователь открывает детальную карточку заказа |
recountFlagstring | Устаревший. Флаг пересчёта. — По умолчанию устанавливается Y |
affiliateIdinteger | Актуально только для коробочной версии. Идентификатор аффилиата |
updated1cstring | Обновлён ли через 1С. — По умолчанию устанавливается |
orderTopicstring | Устаревший. Тема заказа |
xmlIdstring | Внешний идентификатор |
id1cstring | Идентификатор в 1С |
version1cstring | Версия в 1с |
externalOrderstring | Заказ из внешней системы или нет. — По умолчанию устанавливается |
canceledstring | Был ли отменен заказ. — По умолчанию устанавливается |
empCanceledIduser.id | Идентификатор пользователя, отменившего заказ |
reasonCanceledstring | Причина отмены |
Примеры кода
- cURL (Webhook)
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"id":300,"fields":{"price":100,"discountValue":10,"statusId":"N","empStatusId":1,"dateInsert":"2024-03-01T14:00:00","marked":"Y","empMarkedId":1,"reasonMarked":"","userDescription":"","additionalInfo":"","comments":"","companyId":1,"responsibleId":1,"recurringId":1,"lockedBy":1,"recountFlag":"N","affiliateId":1,"updated1c":"N","orderTopic":"","xmlId":"","id1c":"","version1c":"","externalOrder":"N","canceled":"Y","empCanceledId":1,"reasonCanceled":""}}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/sale.order.update- cURL (OAuth)
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"id":300,"fields":{"price":100,"discountValue":10,"statusId":"N","empStatusId":1,"dateInsert":"2024-03-01T14:00:00","marked":"Y","empMarkedId":1,"reasonMarked":"","userDescription":"","additionalInfo":"","comments":"","companyId":1,"responsibleId":1,"recurringId":1,"lockedBy":1,"recountFlag":"N","affiliateId":1,"updated1c":"N","orderTopic":"","xmlId":"","id1c":"","version1c":"","externalOrder":"N","canceled":"Y","empCanceledId":1,"reasonCanceled":""},"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/sale.order.update
- JS
try
{
const response = await $b24.callMethod(
'sale.order.update',
{
id: 300,
fields: {
price: 100,
discountValue: 10,
statusId: 'N',
empStatusId: 1,
dateInsert: '2024-03-01T14:00:00',
marked: 'Y',
empMarkedId: 1,
reasonMarked: '',
userDescription: '',
additionalInfo: '',
comments: '',
companyId: 1,
responsibleId: 1,
recurringId: 1,
lockedBy: 1,
recountFlag: 'N',
affiliateId: 1,
updated1c: 'N',
orderTopic: '',
xmlId: '',
id1c: '',
version1c: '',
externalOrder: 'N',
canceled: 'Y',
empCanceledId: 1,
reasonCanceled: '',
}
}
);
const result = response.getData().result;
console.log(result);
}
catch(error)
{
console.error(error);
}- PHP
try {
$response = $b24Service
->core
->call(
'sale.order.update',
[
'id' => 300,
'fields' => [
'price' => 100,
'discountValue' => 10,
'statusId' => 'N',
'empStatusId' => 1,
'dateInsert' => '2024-03-01T14:00:00',
'marked' => 'Y',
'empMarkedId' => 1,
'reasonMarked' => '',
'userDescription' => '',
'additionalInfo' => '',
'comments' => '',
'companyId' => 1,
'responsibleId' => 1,
'recurringId' => 1,
'lockedBy' => 1,
'recountFlag' => 'N',
'affiliateId' => 1,
'updated1c' => 'N',
'orderTopic' => '',
'xmlId' => '',
'id1c' => '',
'version1c' => '',
'externalOrder' => 'N',
'canceled' => 'Y',
'empCanceledId' => 1,
'reasonCanceled' => '',
],
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error updating sale order: ' . $e->getMessage();
}- BX24.js
BX24.callMethod(
'sale.order.update',
{
id: 300,
fields: {
price: 100,
discountValue: 10,
statusId: 'N',
empStatusId: 1,
dateInsert: '2024-03-01T14:00:00',
marked: 'Y',
empMarkedId: 1,
reasonMarked: '',
userDescription: '',
additionalInfo: '',
comments: '',
companyId: 1,
responsibleId: 1,
recurringId: 1,
lockedBy: 1,
recountFlag: 'N',
affiliateId: 1,
updated1c: 'N',
orderTopic: '',
xmlId: '',
id1c: '',
version1c: '',
externalOrder: 'N',
canceled: 'Y',
empCanceledId: 1,
reasonCanceled: '',
}
},
function(result)
{
if(result.error())
console.error(result.error());
else
console.log(result.data());
}
);- PHP CRest
require_once('crest.php');
$result = CRest::call(
'sale.order.update',
[
'id' => 300,
'fields' => [
'price' => 100,
'discountValue' => 10,
'statusId' => 'N',
'empStatusId' => 1,
'dateInsert' => '2024-03-01T14:00:00',
'marked' => 'Y',
'empMarkedId' => 1,
'reasonMarked' => '',
'userDescription' => '',
'additionalInfo' => '',
'comments' => '',
'companyId' => 1,
'responsibleId' => 1,
'recurringId' => 1,
'lockedBy' => 1,
'recountFlag' => 'N',
'affiliateId' => 1,
'updated1c' => 'N',
'orderTopic' => '',
'xmlId' => '',
'id1c' => '',
'version1c' => '',
'externalOrder' => 'N',
'canceled' => 'Y',
'empCanceledId' => 1,
'reasonCanceled' => '',
]
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';Обработка ответа
HTTP-статус: 200
{
"result": {
"order": {
"accountNumber": "456",
"additionalInfo": "",
"affiliateId": 1,
"canceled": "Y",
"clients": [],
"comments": "",
"companyId": 1,
"currency": "RUB",
"dateCanceled": "2024-04-12T14:06:05+03:00",
"dateInsert": "2024-03-01T13:00:00+03:00",
"dateLock": null,
"dateMarked": "2024-04-15T10:21:14+03:00",
"dateStatus": "2024-04-12T14:06:04+03:00",
"dateUpdate": "2024-04-15T10:21:15+03:00",
"deducted": "N",
"discountValue": 10,
"empCanceledId": 1,
"empMarkedId": 1,
"empStatusId": 1,
"externalOrder": "N",
"id": 300,
"id1c": "",
"lid": "s1",
"lockedBy": "1",
"marked": "N",
"orderTopic": "",
"payed": "N",
"personTypeId": 1,
"personTypeXmlId": "",
"price": 100,
"reasonCanceled": "",
"reasonMarked": "",
"recountFlag": "N",
"recurringId": "1",
"requisiteLink": [],
"responsibleId": 1,
"statusId": "N",
"statusXmlId": "",
"taxValue": null,
"updated1c": "N",
"userDescription": "",
"userId": 1,
"version": 3,
"version1c": "",
"xmlId": ""
}
},
"time": {
"start": 1713169274.29568,
"finish": 1713169275.698528,
"duration": 1.4028480052947998,
"processing": 0.9852678775787354,
"date_start": "2024-04-15T11:21:14+03:00",
"date_finish": "2024-04-15T11:21:15+03:00"
}
}Возвращаемые данные
Названиетип | Описание |
|---|---|
resultobject | Корневой элемент ответа |
ordersale_order | Объект с информацией об обновленном заказе |
timetime | Информация о времени выполнения запроса |
Обработка ошибок
HTTP-статус: 400
{
"error":200540400001
"error_description":"order is not exists"
}Возможные коды ошибок
| Код | Описание |
|---|---|
200540400001 | Обновляемый заказ не найден |
200040300020 | Недостаточно прав для обновления заказа |
100 | Не указан параметр id |
100 | Не указан или пустой параметр fields |
0 | Другие ошибки (например, фатальные ошибки) |
- [](./sale-order-add)
- [](./sale-order-get)
- [](./sale-order-list)
- [](./sale-order-delete)
- [](./sale-order-get-fields)
💡 Экспертное мнение и рекомендации
Ключевые выводы по теме «Изменить заказ sale.order.update»:
Использование современных стандартов D7 при работе с sale.order.update позволяет писать чистый, масштабируемый и безопасный код. Не забывайте обрабатывать исключения (try/catch) и проверять права доступа текущего пользователя перед выполнением критических операций.
Похожая задача в бизнесе?
Помогу автоматизировать процессы и внедрить ИИ
Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.
или на почту: gorandvas@yandex.ru