Обновить отгрузку sale.shipment.update

Scope: sale

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

Метод обновляет отгрузку.

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

Обязательные параметры отмечены *

Название
тип

Описание

id*
sale_order_shipment.id

Идентификатор отгрузки

fields*
object

Значения полей для обновления отгрузки

Параметр fields

Общие параметры, актуальные для свойств отгрузки любого типа:

Обязательные параметры отмечены *

Название
тип

Описание

allowDelivery*
string

Признак разрешения доставки.
Возможные значения:

  • Y – да (доставка разрешена)
  • N – нет (доставка не разрешена)

deducted*
string

Признак того, является ли отгрузка отгруженной.
Возможные значения:

  • Y – да (отгружена)
  • N – нет (не отгружена)

deliveryId*
sale_delivery_service

Идентификатор службы доставки

statusId
sale_status

Идентификатор статуса доставки.

Если не передан, то используется статус DN (см. таблицу статусов по умолчанию из документации по sale.status.*)

deliveryDocDate
datetime

Дата документа отгрузки

deliveryDocNum
string

Номер документа отгрузки

trackingNumber
string

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

basePriceDelivery
double

Базовая стоимость доставки (без скидок / наценок).

Если передана, то используется и для выставления значения priceDelivery. Переданное значение priceDelivery в этом случае игнорируется.

Если не передана ни basePriceDelivery, ни priceDelivery, то обе цены выставляются в 0

priceDelivery
double

Стоимость доставки.

Если передана и не выставлена basePriceDelivery, то используется и для выставления значения basePriceDelivery.

Если не передана ни basePriceDelivery, ни priceDelivery, то обе цены выставляются в 0

comments
string

Комментарий менеджера

companyId
integer

Идентификатор компании из модуля «Интернет-магазин».

В настоящий момент не используется

responsibleId
user

Идентификатор пользователя ответственного за отгрузку

xmlId
string

Внешний идентификатор отгрузки.

Можно использовать для синхронизации отгрузки с внешней системой

Примеры кода

Как использовать примеры в документации

curl -X POST \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{"id":2452,"fields":{"allowDelivery":"N","deducted":"N","deliveryId":3,"statusId":"DD","deliveryDocDate":"2024-02-13T15:05:49","deliveryDocNum":"MyDocumentNumber","trackingNumber":"MyTrackingNumber","basePriceDelivery":1999.99,"comments":"My new comment for manager","responsibleId":1,"xmlId":"myNewXmlId"}}' \
        https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/sale.shipment.update
        
curl -X POST \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{"id":2452,"fields":{"allowDelivery":"N","deducted":"N","deliveryId":3,"statusId":"DD","deliveryDocDate":"2024-02-13T15:05:49","deliveryDocNum":"MyDocumentNumber","trackingNumber":"MyTrackingNumber","basePriceDelivery":1999.99,"comments":"My new comment for manager","responsibleId":1,"xmlId":"myNewXmlId"},"auth":"**put_access_token_here**"}' \
        https://**put_your_bitrix24_address**/rest/sale.shipment.update
        
try
        {
        	const response = await $b24.callMethod(
        		'sale.shipment.update', {
        			id: 2452,
        			fields: {
        				allowDelivery: 'N',
        				deducted: 'N',
        				deliveryId: 3,
        				statusId: 'DD',
        				deliveryDocDate: '2024-02-13T15:05:49',
        				deliveryDocNum: 'MyDocumentNumber',
        				trackingNumber: 'MyTrackingNumber',
        				basePriceDelivery: 1999.99,
        				comments: 'My new comment for manager',
        				responsibleId: 1,
        				xmlId: 'myNewXmlId',
        			}
        		}
        	);
        	
        	const result = response.getData().result;
        	console.log(result);
        }
        catch( error )
        {
        	console.error(error.ex);
        }
        
try {
            $response = $b24Service
                ->core
                ->call(
                    'sale.shipment.update',
                    [
                        'id' => 2452,
                        'fields' => [
                            'allowDelivery'      => 'N',
                            'deducted'           => 'N',
                            'deliveryId'         => 3,
                            'statusId'           => 'DD',
                            'deliveryDocDate'    => '2024-02-13T15:05:49',
                            'deliveryDocNum'     => 'MyDocumentNumber',
                            'trackingNumber'     => 'MyTrackingNumber',
                            'basePriceDelivery'  => 1999.99,
                            'comments'           => 'My new comment for manager',
                            'responsibleId'      => 1,
                            'xmlId'              => 'myNewXmlId',
                        ],
                    ]
                );
        
            $result = $response
                ->getResponseData()
                ->getResult();
        
            echo 'Success: ' . print_r($result, true);
        
        } catch (Throwable $e) {
            error_log($e->getMessage());
            echo 'Error updating shipment: ' . $e->getMessage();
        }
        
BX24.callMethod(
            'sale.shipment.update', {
                id: 2452,
                fields: {
                    allowDelivery: 'N',
                    deducted: 'N',
                    deliveryId: 3,
                    statusId: 'DD',
                    deliveryDocDate: '2024-02-13T15:05:49',
                    deliveryDocNum: 'MyDocumentNumber',
                    trackingNumber: 'MyTrackingNumber',
                    basePriceDelivery: 1999.99,
                    comments: 'My new comment for manager',
                    responsibleId: 1,
                    xmlId: 'myNewXmlId',
                }
            },
            function(result) {
                if (result.error())
                    console.error(result.error().ex);
                else
                    console.log(result.data());
            }
        );
        
require_once('crest.php');
        
        $result = CRest::call(
            'sale.shipment.update',
            [
                'id' => 2452,
                'fields' => [
                    'allowDelivery' => 'N',
                    'deducted' => 'N',
                    'deliveryId' => 3,
                    'statusId' => 'DD',
                    'deliveryDocDate' => '2024-02-13T15:05:49',
                    'deliveryDocNum' => 'MyDocumentNumber',
                    'trackingNumber' => 'MyTrackingNumber',
                    'basePriceDelivery' => 1999.99,
                    'comments' => 'My new comment for manager',
                    'responsibleId' => 1,
                    'xmlId' => 'myNewXmlId',
                ]
            ]
        );
        
        echo '<PRE>';
        print_r($result);
        echo '</PRE>';
        

Ответ в случае успеха

HTTP-статус: 200

{
           "result":{
              "shipment":{
                 "accountNumber":"2068\/19",
                 "allowDelivery":"N",
                 "basePriceDelivery":1999.99,
                 "canceled":"N",
                 "comments":"My new comment for manager",
                 "companyId":null,
                 "currency":"RUB",
                 "customPriceDelivery":"N",
                 "dateAllowDelivery":"2024-04-12T10:01:23+03:00",
                 "dateCanceled":null,
                 "dateDeducted":"2024-04-12T10:01:23+03:00",
                 "dateInsert":"2024-04-11T14:17:52+03:00",
                 "dateMarked":null,
                 "dateResponsibleId":"2024-04-12T10:01:23+03:00",
                 "deducted":"N",
                 "deliveryDocDate":"2024-02-13T14:05:49+03:00",
                 "deliveryDocNum":"MyDocumentNumber",
                 "deliveryId":3,
                 "deliveryName":"Самовывоз",
                 "deliveryXmlId":"",
                 "discountPrice":0,
                 "empAllowDeliveryId":1,
                 "empCanceledId":null,
                 "empDeductedId":1,
                 "empMarkedId":null,
                 "empResponsibleId":1,
                 "externalDelivery":"N",
                 "id":2452,
                 "id1c":"",
                 "marked":"N",
                 "orderId":2068,
                 "priceDelivery":1999.99,
                 "reasonMarked":"",
                 "reasonUndoDeducted":"",
                 "responsibleId":1,
                 "shipmentItems":[
                    
                 ],
                 "statusId":"DD",
                 "statusXmlId":"",
                 "system":"N",
                 "trackingDescription":"",
                 "trackingLastCheck":"",
                 "trackingNumber":"MyTrackingNumber",
                 "trackingStatus":"",
                 "updated1c":"N",
                 "version1c":"",
                 "xmlId":"myNewXmlId"
              }
           },
           "time":{
              "start":1712928678.417617,
              "finish":1712928679.68092,
              "duration":1.2633028030395508,
              "processing":1.0808379650115967,
              "date_start":"2024-04-12T16:31:18+03:00",
              "date_finish":"2024-04-12T16:31:19+03:00"
           }
        }
        

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

Название
тип

Описание

result
object

Корневой элемент ответа

shipment
sale_order_shipment

Объект с информацией об обновленной отгрузке

time
time

Информация о времени выполнения запроса

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

HTTP-статус: 400

{
           "error":0,
           "error_description":"Required fields: name"
        }
        

Название
тип

Описание

error
string

Строковый код ошибки. Может состоять из цифр, латинских букв и знака подчеркивания

error_description
error_description

Текстовое описание ошибки. Описание не предназначено для показа конечному пользователю в необработанном виде

Возможные коды ошибок

Код

Описание

201140400001

Отгрузка не найдена

200040300020

Недостаточно прав для обновления отгрузки

BX_INVALID_VALUE

Значение одного из полей не прошло валидацию перед сохранением

100

Не указан параметр id

100

Не указан или пустой параметр fields

0

Не переданы обязательные поля структуры fields

0

Другие ошибки (например, фатальные ошибки)

HTTP-статус: 20x, 40x, 50x

Описанные ниже ошибки могут возникнуть при вызове любого метода

Статус

Код
Текст ошибки

Описание

500

INTERNAL_SERVER_ERROR
Internal server error

Возникла внутренняя ошибка сервера, обратитесь к администратору сервера или в техническую поддержку Битрикс24

500

ERROR_UNEXPECTED_ANSWER
Server returned an unexpected response

Возникла внутренняя ошибка сервера, обратитесь к администратору сервера или в техническую поддержку Битрикс24

503

QUERY_LIMIT_EXCEEDED
Too many requests

Превышен лимит на интенсивность запросов

405

ERROR_BATCH_METHOD_NOT_ALLOWED
Method is not allowed for batch usage

Текущий метод не разрешен для вызова с помощью batch

400

ERROR_BATCH_LENGTH_EXCEEDED
Max batch length exceeded

Превышена максимальная длина параметров, переданных в метод batch

401

NO_AUTH_FOUND
Wrong authorization data

Неверный access-токен или код вебхука

400

INVALID_REQUEST
Https required

Для вызовов методов требуется использовать протокол HTTPS

503

OVERLOAD_LIMIT
REST API is blocked due to overload

REST API заблокирован из-за перегрузки. Это ручная индивидуальная блокировка, для снятия необходимо обращаться в техническую поддержку Битрикс24

403

ACCESS_DENIED
REST API is available only on commercial plans

REST API доступен только на коммерческих планах

403

INVALID_CREDENTIALS
Invalid request credentials

У пользователя, с чьим access-токеном или вебхуком был вызван метод, не хватает прав

404

ERROR_MANIFEST_IS_NOT_AVAILABLE
Manifest is not available

Манифест недоступен

403

insufficient_scope
The request requires higher privileges than provided by the webhook token

Запрос требует более высоких привилегий, чем предоставляет токен вебхука

401

expired_token
The access token provided has expired

Предоставленный access-токен доступа истек

403

user_access_error
The user does not have access to the application

Пользователь не имеет доступа к приложению. Это означает, что приложение установлено, но администратор портала разрешил доступ к этому приложению только конкретным пользователям

500

PORTAL_DELETED
Portal was deleted

Публичная часть сайта закрыта. Чтобы открыть публичную часть сайта на коробочной установке отключите опцию «Временное закрытие публичной части сайта». Путь к настройке: Рабочий стол > Настройки > Настройки продукта > Настройки модулей > Главный модуль > Временное закрытие публичной части сайта

Продолжите изучение