sale.delivery.handler.update
Обновить обработчик службы доставки
Описание
Метод sale.delivery.handler.update обновляет обработчик службы доставки.
Параметры
ID
sale_delivery_handler.ID
обязательный
Идентификатор обработчика службы доставки.
Получить идентификаторы обработчиков службы доставки можно с помощью метода sale.delivery.handler.list
NAME
string
необязательный
Название обработчика службы доставки
CODE
string
необязательный
Символьный код обработчика службы доставки
SORT
integer
необязательный
Сортировка
DESCRIPTION
string
необязательный
Описание обработчика службы доставки
SETTINGS
object
необязательный
Объект, содержащий информацию о настройках обработчика службы доставки (подробное описание приведено ниже)
PROFILES
object[]
необязательный
Массив, содержащий список объектов профилей доставки (подробное описание приведено ниже).
Подразумевается, что у обработчика службы доставки должен быть как минимум 1 профиль
Параметр SETTINGS
CALCULATE_URL
string
обязательный
URL для расчета стоимости доставки.
На данный URL приходят данные о посылке (что доставить, куда и как), стоимость доставки которой нужно рассчитать в ответе.
Формат запроса и ответа детально описан в документации по веб-хуку Расчет стоимости доставки
CREATE_DELIVERY_REQUEST_URL
string
необязательный
URL для создания заказа на доставку.
На данный URL приходят данные о посылке (что доставить, куда и как), заказ на которую нужно оформить в службе доставки.
Формат запроса и ответа детально описан в документации по веб-хуку Создание заказа на доставку
CANCEL_DELIVERY_REQUEST_URL
string
необязательный
URL для отмены заказа на доставку
На данный URL приходят данные о посылке (что доставить, куда и как), заказ на которую нужно отменить в службе доставки.
Формат запроса и ответа детально описан в документации по веб-хуку Отмена заказа на доставку
HAS_CALLBACK_TRACKING_SUPPORT
string
необязательный
Индикатор того, будет ли служба доставки присылать оповещения о статусе заказа на доставку (см. метод sale.delivery.request.sendmessage).
В случае, если поддержка событий указана, то в интерфейсе менеджера при заказе доставки будет создано дело на доставку, в которое могут транслироваться изменения, связанные с текущим статусом доставки.
Возможные значения:
- Y — есть поддержка
- N — нет поддержки
CONFIG
object
необязательный
Массив объектов с доступными настройками для службы доставки, создаваемой с использованием данного обработчика (подробное описание приведено ниже)
Параметр CONFIG
TYPE
string
обязательный
Тип поля настройки
Возможные значения:
- STRING — строка
- Y/N — чекбокс (да / нет)
- NUMBER — число
- ENUM — список
- DATE — дата
- LOCATION — местоположение
CODE
string
обязательный
Символьный код настройки
NAME
string
обязательный
Название настройки
OPTIONS
object
необязательный
Список опций для выбора. Объект в формате ключ=значение. Где ключ — код опции, а значение — опция.
Пример:
{
"Option1Code": "Option1Value",
"Option2Code": "Option2Value",
"Option3Code": "Option3Value"
}
Параметр актуален только для настройки типа ENUM
Параметр PROFILES
NAME
string
обязательный
Название профиля обработчика службы доставки
CODE
string
обязательный
Символьный код профиля обработчика службы доставки
DESCRIPTION
string
необязательный
Описание профиля обработчика службы доставки
Примеры запроса
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"ID":14,"CODE":"uber","NAME":"New Uber","DESCRIPTION":"New Uber Description","SORT":300,"SETTINGS":{"CALCULATE_URL":"https://gateway.bx/calculate.php","CREATE_DELIVERY_REQUEST_URL":"https://gateway.bx/create_delivery_request.php","CANCEL_DELIVERY_REQUEST_URL":"https://gateway.bx/cancel_delivery_request.php","HAS_CALLBACK_TRACKING_SUPPORT":"N","CONFIG":[{"TYPE":"STRING","CODE":"SETTING_1","NAME":"String Example"},{"TYPE":"Y/N","CODE":"SETTING_2","NAME":"Checkbox Example"},{"TYPE":"NUMBER","CODE":"SETTING_3","NAME":"Number Example"},{"TYPE":"ENUM","CODE":"SETTING_4","NAME":"Enum Example","OPTIONS":{"Option1Code":"Option1Value","Option2Code":"Option2Value","Option3Code":"Option3Value","Option4Code":"Option4Value","Option5Code":"Option5Value"}},{"TYPE":"DATE","CODE":"SETTING_5","NAME":"Date Example"},{"TYPE":"LOCATION","CODE":"SETTING_6","NAME":"Location Example"}]},"PROFILES":[{"NAME":"New Taxi","CODE":"TAXI","DESCRIPTION":"New Taxi Delivery"},{"NAME":"New Cargo","CODE":"CARGO","DESCRIPTION":"New Cargo Delivery"}]}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/sale.delivery.handler.update
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"ID":14,"CODE":"uber","NAME":"New Uber","DESCRIPTION":"New Uber Description","SORT":300,"SETTINGS":{"CALCULATE_URL":"https://gateway.bx/calculate.php","CREATE_DELIVERY_REQUEST_URL":"https://gateway.bx/create_delivery_request.php","CANCEL_DELIVERY_REQUEST_URL":"https://gateway.bx/cancel_delivery_request.php","HAS_CALLBACK_TRACKING_SUPPORT":"N","CONFIG":[{"TYPE":"STRING","CODE":"SETTING_1","NAME":"String Example"},{"TYPE":"Y/N","CODE":"SETTING_2","NAME":"Checkbox Example"},{"TYPE":"NUMBER","CODE":"SETTING_3","NAME":"Number Example"},{"TYPE":"ENUM","CODE":"SETTING_4","NAME":"Enum Example","OPTIONS":{"Option1Code":"Option1Value","Option2Code":"Option2Value","Option3Code":"Option3Value","Option4Code":"Option4Value","Option5Code":"Option5Value"}},{"TYPE":"DATE","CODE":"SETTING_5","NAME":"Date Example"},{"TYPE":"LOCATION","CODE":"SETTING_6","NAME":"Location Example"}]},"PROFILES":[{"NAME":"New Taxi","CODE":"TAXI","DESCRIPTION":"New Taxi Delivery"},{"NAME":"New Cargo","CODE":"CARGO","DESCRIPTION":"New Cargo Delivery"}],"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/sale.delivery.handler.update
// This snippet is an ES module: top-level await requires type="module" or a bundler.
// $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
import { Text } from '@bitrix24/b24jssdk'
import type { B24Frame } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
try {
const response = await $b24.actions.v2.call.make<boolean>({
method: 'sale.delivery.handler.update',
params: {
ID: 14,
CODE: 'uber',
NAME: 'New Uber',
DESCRIPTION: 'New Uber Description',
SORT: 300,
SETTINGS: {
CALCULATE_URL: 'https://gateway.bx/calculate.php',
CREATE_DELIVERY_REQUEST_URL: 'https://gateway.bx/create_delivery_request.php',
CANCEL_DELIVERY_REQUEST_URL: 'https://gateway.bx/cancel_delivery_request.php',
HAS_CALLBACK_TRACKING_SUPPORT: 'N',
CONFIG: [
{ TYPE: 'STRING', CODE: 'SETTING_1', NAME: 'String Example' },
{ TYPE: 'Y/N', CODE: 'SETTING_2', NAME: 'Checkbox Example' },
{ TYPE: 'NUMBER', CODE: 'SETTING_3', NAME: 'Number Example' },
{
TYPE: 'ENUM',
CODE: 'SETTING_4',
NAME: 'Enum Example',
OPTIONS: {
Option1Code: 'Option1Value',
Option2Code: 'Option2Value',
Option3Code: 'Option3Value',
Option4Code: 'Option4Value',
Option5Code: 'Option5Value',
},
},
{ TYPE: 'DATE', CODE: 'SETTING_5', NAME: 'Date Example' },
{ TYPE: 'LOCATION', CODE: 'SETTING_6', NAME: 'Location Example' },
],
},
PROFILES: [
{ NAME: 'New Taxi', CODE: 'TAXI', DESCRIPTION: 'New Taxi Delivery' },
{ NAME: 'New Cargo', CODE: 'CARGO', DESCRIPTION: 'New Cargo Delivery' },
],
},
requestId: Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
} else {
const result = response.getData()!.result
console.info('Handler updated successfully:', result)
}
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
<script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
<script>
async function updateDeliveryHandler() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'sale.delivery.handler.update',
params: {
ID: 14,
CODE: 'uber',
NAME: 'New Uber',
DESCRIPTION: 'New Uber Description',
SORT: 300,
SETTINGS: {
CALCULATE_URL: 'https://gateway.bx/calculate.php',
CREATE_DELIVERY_REQUEST_URL: 'https://gateway.bx/create_delivery_request.php',
CANCEL_DELIVERY_REQUEST_URL: 'https://gateway.bx/cancel_delivery_request.php',
HAS_CALLBACK_TRACKING_SUPPORT: 'N',
CONFIG: [
{ TYPE: 'STRING', CODE: 'SETTING_1', NAME: 'String Example' },
{ TYPE: 'Y/N', CODE: 'SETTING_2', NAME: 'Checkbox Example' },
{ TYPE: 'NUMBER', CODE: 'SETTING_3', NAME: 'Number Example' },
{
TYPE: 'ENUM',
CODE: 'SETTING_4',
NAME: 'Enum Example',
OPTIONS: {
Option1Code: 'Option1Value',
Option2Code: 'Option2Value',
Option3Code: 'Option3Value',
Option4Code: 'Option4Value',
Option5Code: 'Option5Value',
},
},
{ TYPE: 'DATE', CODE: 'SETTING_5', NAME: 'Date Example' },
{ TYPE: 'LOCATION', CODE: 'SETTING_6', NAME: 'Location Example' },
],
},
PROFILES: [
{ NAME: 'New Taxi', CODE: 'TAXI', DESCRIPTION: 'New Taxi Delivery' },
{ NAME: 'New Cargo', CODE: 'CARGO', DESCRIPTION: 'New Cargo Delivery' },
],
},
requestId: B24Js.Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
return
}
const result = response.getData().result
console.info('Handler updated successfully:', result)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', updateDeliveryHandler)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
settings = {
"CALCULATE_URL": "https://gateway.bx/calculate.php",
"CREATE_DELIVERY_REQUEST_URL": "https://gateway.bx/create_delivery_request.php",
"CANCEL_DELIVERY_REQUEST_URL": "https://gateway.bx/cancel_delivery_request.php",
"HAS_CALLBACK_TRACKING_SUPPORT": "N",
"CONFIG": [
{
"TYPE": "STRING",
"CODE": "SETTING_1",
"NAME": "String Example",
},
{
"TYPE": "Y/N",
"CODE": "SETTING_2",
"NAME": "Checkbox Example",
},
{
"TYPE": "NUMBER",
"CODE": "SETTING_3",
"NAME": "Number Example",
},
{
"TYPE": "ENUM",
"CODE": "SETTING_4",
"NAME": "Enum Example",
"OPTIONS": {
"Option1Code": "Option1Value",
"Option2Code": "Option2Value",
"Option3Code": "Option3Value",
"Option4Code": "Option4Value",
"Option5Code": "Option5Value",
},
},
{
"TYPE": "DATE",
"CODE": "SETTING_5",
"NAME": "Date Example",
},
{
"TYPE": "LOCATION",
"CODE": "SETTING_6",
"NAME": "Location Example",
},
],
}
profiles = [
{
"NAME": "New Taxi",
"CODE": "TAXI",
"DESCRIPTION": "New Taxi Delivery",
},
{
"NAME": "New Cargo",
"CODE": "CARGO",
"DESCRIPTION": "New Cargo Delivery",
},
]
try:
bitrix_response = client.sale.delivery.handler.update(
bitrix_id=14,
code='uber',
name='New Uber',
sort=300,
description='New Uber Description',
settings=settings,
profiles=profiles,
).response
result = bitrix_response.result
print(result)
except BitrixAPIError as error:
print(
"Ошибка Bitrix API",
f"error: {error.error}",
f"error_description: {error.error_description}",
sep="\n",
)
except BitrixSDKException as error:
print(f"Ошибка Bitrix SDK: {error.message}")
except Exception as error:
print(f"Непредвиденная ошибка: {error}")
try {
$response = $b24Service
->core
->call(
'sale.delivery.handler.update',
[
'ID' => 14,
'CODE' => "uber",
'NAME' => "New Uber",
'DESCRIPTION' => "New Uber Description",
'SORT' => 300,
'SETTINGS' => [
'CALCULATE_URL' => "https://gateway.bx/calculate.php",
'CREATE_DELIVERY_REQUEST_URL' => "https://gateway.bx/create_delivery_request.php",
'CANCEL_DELIVERY_REQUEST_URL' => "https://gateway.bx/cancel_delivery_request.php",
'HAS_CALLBACK_TRACKING_SUPPORT' => "N",
'CONFIG' => [
[
'TYPE' => "STRING",
'CODE' => "SETTING_1",
'NAME' => "String Example",
],
[
'TYPE' => "Y/N",
'CODE' => "SETTING_2",
'NAME' => "Checkbox Example",
],
[
'TYPE' => "NUMBER",
'CODE' => "SETTING_3",
'NAME' => "Number Example",
],
[
'TYPE' => "ENUM",
'CODE' => "SETTING_4",
'NAME' => "Enum Example",
'OPTIONS' => [
"Option1Code" => "Option1Value",
"Option2Code" => "Option2Value",
"Option3Code" => "Option3Value",
"Option4Code" => "Option4Value",
"Option5Code" => "Option5Value",
],
],
[
'TYPE' => "DATE",
'CODE' => "SETTING_5",
'NAME' => "Date Example",
],
[
'TYPE' => "LOCATION",
'CODE' => "SETTING_6",
'NAME' => "Location Example",
],
],
],
'PROFILES' => [
[
'NAME' => "New Taxi",
'CODE' => "TAXI",
'DESCRIPTION' => "New Taxi Delivery",
],
[
'NAME' => "New Cargo",
'CODE' => "CARGO",
'DESCRIPTION' => "New Cargo Delivery",
],
],
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error updating delivery handler: ' . $e->getMessage();
}
BX24.callMethod(
'sale.delivery.handler.update', {
ID: 14,
CODE: "uber",
NAME: "New Uber",
DESCRIPTION: "New Uber Description",
SORT: 300,
SETTINGS: {
CALCULATE_URL: "https://gateway.bx/calculate.php",
CREATE_DELIVERY_REQUEST_URL: "https://gateway.bx/create_delivery_request.php",
CANCEL_DELIVERY_REQUEST_URL: "https://gateway.bx/cancel_delivery_request.php",
HAS_CALLBACK_TRACKING_SUPPORT: "N",
CONFIG: [{
TYPE: "STRING",
CODE: "SETTING_1",
NAME: "String Example",
},
{
TYPE: "Y/N",
CODE: "SETTING_2",
NAME: "Checkbox Example",
},
{
TYPE: "NUMBER",
CODE: "SETTING_3",
NAME: "Number Example",
},
{
TYPE: "ENUM",
CODE: "SETTING_4",
NAME: "Enum Example",
OPTIONS: {
"Option1Code": "Option1Value",
"Option2Code": "Option2Value",
"Option3Code": "Option3Value",
"Option4Code": "Option4Value",
"Option5Code": "Option5Value",
},
},
{
TYPE: "DATE",
CODE: "SETTING_5",
NAME: "Date Example",
},
{
TYPE: "LOCATION",
CODE: "SETTING_6",
NAME: "Location Example",
},
],
},
PROFILES: [{
NAME: "New Taxi",
CODE: "TAXI",
DESCRIPTION: "New Taxi Delivery",
},
{
NAME: "New Cargo",
CODE: "CARGO",
DESCRIPTION: "New Cargo Delivery",
},
],
},
function(result) {
if (result.error()) {
console.error(result.error());
} else {
console.info(result.data());
}
}
);
require_once('crest.php');
$result = CRest::call(
'sale.delivery.handler.update',
[
'ID' => 14,
'CODE' => "uber",
'NAME' => "New Uber",
'DESCRIPTION' => "New Uber Description",
'SORT' => 300,
'SETTINGS' => [
'CALCULATE_URL' => "https://gateway.bx/calculate.php",
'CREATE_DELIVERY_REQUEST_URL' => "https://gateway.bx/create_delivery_request.php",
'CANCEL_DELIVERY_REQUEST_URL' => "https://gateway.bx/cancel_delivery_request.php",
'HAS_CALLBACK_TRACKING_SUPPORT' => "N",
'CONFIG' => [
['TYPE' => "STRING", 'CODE' => "SETTING_1", 'NAME' => "String Example"],
['TYPE' => "Y/N", 'CODE' => "SETTING_2", 'NAME' => "Checkbox Example"],
['TYPE' => "NUMBER", 'CODE' => "SETTING_3", 'NAME' => "Number Example"],
[
'TYPE' => "ENUM",
'CODE' => "SETTING_4",
'NAME' => "Enum Example",
'OPTIONS' => [
"Option1Code" => "Option1Value",
"Option2Code" => "Option2Value",
"Option3Code" => "Option3Value",
"Option4Code" => "Option4Value",
"Option5Code" => "Option5Value",
],
],
['TYPE' => "DATE", 'CODE' => "SETTING_5", 'NAME' => "Date Example"],
['TYPE' => "LOCATION", 'CODE' => "SETTING_6", 'NAME' => "Location Example"],
],
],
'PROFILES' => [
['NAME' => "New Taxi", 'CODE' => "TAXI", 'DESCRIPTION' => "New Taxi Delivery"],
['NAME' => "New Cargo", 'CODE' => "CARGO", 'DESCRIPTION' => "New Cargo Delivery"],
],
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "sale.delivery.handler.update", b24.Params{
"ID": 14,
"CODE": "uber",
"NAME": "New Uber",
"DESCRIPTION": "New Uber Description",
"SORT": 300,
"SETTINGS": b24.Params{
"CALCULATE_URL": "https://gateway.bx/calculate.php",
"CREATE_DELIVERY_REQUEST_URL": "https://gateway.bx/create_delivery_request.php",
"CANCEL_DELIVERY_REQUEST_URL": "https://gateway.bx/cancel_delivery_request.php",
"HAS_CALLBACK_TRACKING_SUPPORT": "N",
"CONFIG": []b24.Params{
{
"TYPE": "STRING",
"CODE": "SETTING_1",
"NAME": "String Example",
},
{
"TYPE": "Y/N",
"CODE": "SETTING_2",
"NAME": "Checkbox Example",
},
{
"TYPE": "NUMBER",
"CODE": "SETTING_3",
"NAME": "Number Example",
},
{
"TYPE": "ENUM",
"CODE": "SETTING_4",
"NAME": "Enum Example",
"OPTIONS": b24.Params{
"Option1Code": "Option1Value",
"Option2Code": "Option2Value",
"Option3Code": "Option3Value",
"Option4Code": "Option4Value",
"Option5Code": "Option5Value",
},
},
{
"TYPE": "DATE",
"CODE": "SETTING_5",
"NAME": "Date Example",
},
{
"TYPE": "LOCATION",
"CODE": "SETTING_6",
"NAME": "Location Example",
},
},
},
"PROFILES": []b24.Params{
{
"NAME": "New Taxi",
"CODE": "TAXI",
"DESCRIPTION": "New Taxi Delivery",
},
{
"NAME": "New Cargo",
"CODE": "CARGO",
"DESCRIPTION": "New Cargo Delivery",
},
},
})
if err != nil {
return fmt.Errorf("sale.delivery.handler.update: %w", err)
}
var ok bool
if err := json.Unmarshal(res.Result, &ok); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println("выполнено:", ok)
Ответ
HTTP-статус: 200
{
"result":true,
"time":{
"start":1713857588.711742,
"finish":1713857589.121912,
"duration":0.4101700782775879,
"processing":0.02155303955078125,
"date_start":"2024-04-23T10:33:08+03:00",
"date_finish":"2024-04-23T10:33:09+03:00"
}
}
Возвращаемые данные
result
boolean
Результат обновления обработчика службы доставки
time
time
Информация о времени выполнения запроса
Обработка ошибок
HTTP-статус: 400
{
"error":"ERROR_HANDLER_NOT_FOUND",
"error_description":"Handler not found"
}
| Код | Описание | Значение |
|---|---|---|
ERROR_HANDLER_NOT_FOUND |
Обработчик службы доставки с указанным идентификатором не найден | 400 |
ERROR_CHECK_FAILURE |
Ошибка валидации входящих параметров (детали в описании ошибки) | 400 |
ERROR_HANDLER_UPDATE |
Ошибка при попытке обновления обработчика службы доставки | 400 |
ERROR_HANDLER_ALREADY_EXIST |
Обработчик службы доставки с указанным кодом уже существует | 400 |
ACCESS_DENIED |
Недостаточно прав для обновления обработчика службы доставки | 403 |

