Блог Горошко Андрея 1C-Битрикс,Bitrix24 Изменить заказ sale.order.update

Изменить заказ sale.order.update

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Изменить заказ sale.order.update». Вы узнаете экспертные методики работы с sale.order.update и научитесь избегать типичных ошибок начинающих разработчиков.

Изменить заказ sale.order.update

> Scope: sale
>
> Кто может выполнять метод: администратор

Метод sale.order.update обновляет поля заказа.

Параметры метода

Название
тип
Описание
id
sale_order.id
Идентификатор заказа
fields
object
Значения полей для изменения заказа

Параметр fields

Название
тип
Описание
price
double
Цена
discountValue
double
Значение скидки
statusId
sale_status.id
Идентификатор статуса заказа
empStatusId
user.id
Идентификатор пользователя, изменившего статус заказа
dateInsert
datetime
Дата создания заказа
marked
string
Флаг маркировки. Признак того, является ли отгрузка отмеченной как проблемная. Значение Y ставится автоматически, если при сохранении произошла ошибка.

— Y — да
— N — нет

По умолчанию устанавливается N

empMarkedId
user.id
Идентификатор пользователя, поставившего маркировку
reasonMarked
string
Причина, по которой заказ был промаркирован
userDescription
string
Комментарий покупателя к заказу
additionalInfo
string
Устаревший.

Дополнительная информация

comments
string
Комментарий менеджера к заказу
responsibleId
user.id
Идентификатор пользователя, ответственного за заказ
recurringId
integer
Идентификатор продления подписки
lockedBy
user.id
Актуально только для коробочной версии.

Идентификатор пользователя, заблокировавшего заказ. Заказ блокируется в административной панели, когда пользователь открывает детальную карточку заказа

recountFlag
string
Устаревший.

Флаг пересчёта.

— Y — да
— N — нет

По умолчанию устанавливается Y

affiliateId
integer
Актуально только для коробочной версии.

Идентификатор аффилиата

updated1c
string
Обновлён ли через 1С.

— Y — да
— N — нет

По умолчанию устанавливается N

orderTopic
string
Устаревший.

Тема заказа

xmlId
string
Внешний идентификатор
id1c
string
Идентификатор в 1С
version1c
string
Версия в 1с
externalOrder
string
Заказ из внешней системы или нет.

— Y — да
— N — нет

По умолчанию устанавливается N

canceled
string
Был ли отменен заказ.

— Y — да
— N — нет

По умолчанию устанавливается N

empCanceledId
user.id
Идентификатор пользователя, отменившего заказ
reasonCanceled
string
Причина отмены

Примеры кода

  • 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"
    }
}

Возвращаемые данные

Название
тип
Описание
result
object
Корневой элемент ответа
order
sale_order
Объект с информацией об обновленном заказе
time
time
Информация о времени выполнения запроса

Обработка ошибок

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 и создаю умных ИИ-агентов для автоматизации рутины.

Related Post

Установить набор дополнительных контентных блоков в запись таймлайна crm.time…Установить набор дополнительных контентных блоков в запись таймлайна crm.time…

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Установить набор дополнительных контентных блоков в запись таймлайна crm.time…». Вы узнаете экспертные методики

Удалить эпик tasks.api.scrum.epic.deleteУдалить эпик tasks.api.scrum.epic.delete

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Удалить эпик tasks.api.scrum.epic.delete». Мы подготовили подробный разбор принципов работы и развернутые примеры интеграции. Удалить эпик

Как использовать метод SDK tasks.task.delete в Битрикс24Как использовать метод SDK tasks.task.delete в Битрикс24

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Как использовать метод SDK tasks.task.delete в Битрикс24», проанализируем