Блог Горошко Андрея 1C-Битрикс,Bitrix24 Обновить свойство отгрузки sale.shipmentproperty.update

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

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Обновить свойство отгрузки sale.shipmentproperty.update», проанализируем лучшие практики и покажем, как правильно использовать sale.shipmentproperty.update в реальных задачах.

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

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

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

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

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

Параметр fields

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

Название
тип
Описание
name*
string
Название свойства отгрузки
code
string
Символьный код свойства отгрузки
active
string
Индикатор активности свойства отгрузки.
Возможные значения:
— Y — да
— N — нет

Если не передано, то по умолчанию значение Y

util
string
Индикатор, является ли свойство отгрузки служебным. Служебные свойства отгрузки не отображаются в публичной части.
Возможные значения:
— Y — да
— N — нет

Если не передано, то по умолчанию значение N

userProps
string
Индикатор, входит ли свойство отгрузки в профиль покупателя.
Возможные значения:
— Y — да
— N — нет

Если не передано, то по умолчанию значение N

isFiltered
string
Индикатор, доступно ли свойство отгрузки в фильтре на странице списка отгрузок.
Возможные значения:
— Y — да
— N — нет

Если не передано, то по умолчанию значение N

sort
integer
Сортировка
description
string
Описание свойства отгрузки
required
string
Индикатор обязательности заполнения значения свойства отгрузки.
Возможные значения:
— Y — да
— N — нет

Если не передано, то по умолчанию значение N

multiple
string
Индикатор, является ли свойство заказа множественным. Для множественных свойств возможно указать несколько значений.
Возможные значения:
— Y — да
— N — нет

Если не передано, то по умолчанию значение N

xmlId
string
Внешний идентификатор свойства отгрузки
defaultValue
any
Дефолтное значение свойства отгрузки.
Для множественных свойств отгрузки (multiple) поддерживается передача массива значений
settings
object
Объект в формате {«field_1»: «value_1», … «field_N»: «value_N»} для передачи дополнительных настроек свойства отгрузки.

Список поддерживаемых ключей этого объекта зависит от типа свойства. Для некоторых типов свойств (например, Y/N) дополнительные свойства не предусмотрены. Описание параметра settings для разных типов свойств приведено в описании метода sale.shipmentproperty.add

Параметры, актуальные для свойств заказа типа STRING

Название
тип
Описание
isProfileName
string
Индикатор необходимости использования значения данного свойства отгрузки в качестве названия профиля пользователя.
Возможные значения:
— Y — да
— N — нет

Если не передано, то по умолчанию выставляется в значение N

isPayer
string
Индикатор необходимости использования значения данного свойства отгрузки в качестве имени плательщика.
Возможные значения:
— Y — да
— N — нет

Если не передано, то по умолчанию выставляется в значение N

isEmail
string
Индикатор необходимости использования значения данного свойства отгрузки в качестве e-mail (например, при регистрации нового пользователя при оформлении заказа).
Возможные значения:
— Y — да
— N — нет

Если не передано, то по умолчанию выставляется в значение N

isPhone
string
Индикатор необходимости использования значения данного свойства отгрузки в качестве номера телефона.
Возможные значения:
— Y — да
— N — нет

Если не передано, то по умолчанию выставляется в значение N

isZip
string
Индикатор необходимости использования значения данного свойства отгрузки в качестве почтового индекса.
Возможные значения:
— Y — да
— N — нет

Если не передано, то по умолчанию выставляется в значение N

isAddress
string
Индикатор необходимости использования значения данного свойства отгрузки в качестве адреса.
Возможные значения:
— Y — да
— N — нет

Если не передано, то по умолчанию выставляется в значение N

Параметры, актуальные для свойств отгрузки типа LOCATION

Название
тип
Описание
isLocation
string
Индикатор необходимости использования значения данного свойства отгрузки в качестве местоположения покупателя для расчета стоимости доставки.
Возможные значения:
— Y — да
— N — нет

Если не передано, то по умолчанию выставляется в значение N

isLocation4tax
string
Индикатор необходимости использования значения данного свойства отгрузки в качестве местоположения покупателя для определения ставок налогов.
Возможные значения:
— Y — да
— N — нет

Если не передано, то по умолчанию выставляется в значение N

inputFieldLocation
string
Устаревшее поле. Не используется

Параметры, актуальные для свойств отгрузки типа ADDRESS

Название
тип
Описание
isAddressFrom
string
Индикатор необходимости использования значения данного свойства отгрузки в качестве адреса покупателя, откуда необходимо забрать заказ для расчета стоимости доставки.
Возможные значения:
— Y — да
— N — нет

Если не передано, то по умолчанию выставляется в значение N

isAddressTo
string
Индикатор необходимости использования значения данного свойства отгрузки в качестве адреса покупателя, куда необходимо доставить заказ для расчета стоимости доставки.
Возможные значения:
— Y — да
— N — нет

Если не передано, то по умолчанию выставляется в значение N

Примеры кода

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"id":93,"fields":{"personTypeId":3,"propsGroupId":6,"name":"Телефон (для связи с курьером)","type":"STRING","code":"PHONE","active":"Y","util":"N","userProps":"Y","isFiltered":"N","sort":500,"description":"описание свойства","required":"Y","multiple":"N","settings":{"multiline":"Y","maxlength":100},"xmlId":"","defaultValue":"","isProfileName":"Y","isPayer":"Y","isEmail":"N","isPhone":"N","isZip":"N","isAddress":"N"},"auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/sale.shipmentproperty.update
  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"id":93,"fields":{"personTypeId":3,"propsGroupId":6,"name":"Телефон (для связи с курьером)","type":"STRING","code":"PHONE","active":"Y","util":"N","userProps":"Y","isFiltered":"N","sort":500,"description":"описание свойства","required":"Y","multiple":"N","settings":{"multiline":"Y","maxlength":100},"xmlId":"","defaultValue":"","isProfileName":"Y","isPayer":"Y","isEmail":"N","isPhone":"N","isZip":"N","isAddress":"N"}}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/sale.shipmentproperty.update
  • JS
    try
    {
    	const response = await $b24.callMethod(
    		'sale.shipmentproperty.update', {
    			id: 93,
    			fields: {
    				personTypeId: 3,
    				propsGroupId: 6,
    				name: 'Телефон (для связи с курьером)',
    				type: 'STRING',
    				code: 'PHONE',
    				active: 'Y',
    				util: 'N',
    				userProps: 'Y',
    				isFiltered: 'N',
    				sort: 500,
    				description: 'описание свойства',
    				required: 'Y',
    				multiple: 'N',
    				settings: {
    					multiline: 'Y',
    					maxlength: 100
    				},
    				xmlId: '',
    				defaultValue: '',
    				isProfileName: 'Y',
    				isPayer: 'Y',
    				isEmail: 'N',
    				isPhone: 'N',
    				isZip: 'N',
    				isAddress: 'N',
    			}
    		}
    	);
    	
    	const result = response.getData().result;
    	console.info(result);
    }
    catch( error )
    {
    	console.error(error);
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'sale.shipmentproperty.update',
                [
                    'id' => 93,
                    'fields' => [
                        'personTypeId'  => 3,
                        'propsGroupId'  => 6,
                        'name'          => 'Телефон (для связи с курьером)',
                        'type'          => 'STRING',
                        'code'          => 'PHONE',
                        'active'        => 'Y',
                        'util'          => 'N',
                        'userProps'     => 'Y',
                        'isFiltered'    => 'N',
                        'sort'          => 500,
                        'description'   => 'описание свойства',
                        'required'      => 'Y',
                        'multiple'      => 'N',
                        'settings'      => [
                            'multiline' => 'Y',
                            'maxlength' => 100
                        ],
                        'xmlId'         => '',
                        'defaultValue'  => '',
                        'isProfileName' => 'Y',
                        'isPayer'       => 'Y',
                        'isEmail'       => 'N',
                        'isPhone'       => 'N',
                        'isZip'         => 'N',
                        'isAddress'     => 'N',
                    ],
                ]
            );
    
        $result = $response
            ->getResponseData()
            ->getResult();
    
        echo 'Success: ' . print_r($result, true);
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error updating shipment property: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        'sale.shipmentproperty.update', {
            id: 93,
            fields: {
                personTypeId: 3,
                propsGroupId: 6,
                name: 'Телефон (для связи с курьером)',
                type: 'STRING',
                code: 'PHONE',
                active: 'Y',
                util: 'N',
                userProps: 'Y',
                isFiltered: 'N',
                sort: 500,
                description: 'описание свойства',
                required: 'Y',
                multiple: 'N',
                settings: {
                    multiline: 'Y',
                    maxlength: 100
                },
                xmlId: '',
                defaultValue: '',
                isProfileName: 'Y',
                isPayer: 'Y',
                isEmail: 'N',
                isPhone: 'N',
                isZip: 'N',
                isAddress: 'N',
            }
        },
        function(result) {
            if (result.error()) {
                console.error(result.error());
            } else {
                console.info(result.data());
            }
        }
    );
  • PHP CRest
    require_once('crest.php');

    $result = CRest::call(
        'sale.shipmentproperty.update',
        [
            'id' => 93,
            'fields' => [
                'personTypeId' => 3,
                'propsGroupId' => 6,
                'name' => 'Телефон (для связи с курьером)',
                'type' => 'STRING',
                'code' => 'PHONE',
                'active' => 'Y',
                'util' => 'N',
                'userProps' => 'Y',
                'isFiltered' => 'N',
                'sort' => 500,
                'description' => 'описание свойства',
                'required' => 'Y',
                'multiple' => 'N',
                'settings' => [
                    'multiline' => 'Y',
                    'maxlength' => 100
                ],
                'xmlId' => '',
                'defaultValue' => '',
                'isProfileName' => 'Y',
                'isPayer' => 'Y',
                'isEmail' => 'N',
                'isPhone' => 'N',
                'isZip' => 'N',
                'isAddress' => 'N',
            ]
        ]
    );

    echo '<PRE>';
    print_r($result);
    echo '</PRE>';

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

HTTP-статус: 200

{
   "result":{
      "property":{
         "active":"Y",
         "code":"PHONE",
         "defaultValue":"",
         "description":"описание свойства",
         "id":96,
         "inputFieldLocation":"0",
         "isAddress":"N",
         "isAddressFrom":"N",
         "isAddressTo":"N",
         "isEmail":"N",
         "isFiltered":"N",
         "isLocation":"N",
         "isLocation4tax":"N",
         "isPayer":"Y",
         "isPhone":"N",
         "isProfileName":"Y",
         "isZip":"N",
         "multiple":"N",
         "name":"Телефон (для связи с курьером)",
         "personTypeId":3,
         "propsGroupId":6,
         "required":"Y",
         "settings":{
            "maxlength":"100",
            "multiline":"Y"
         },
         "sort":500,
         "type":"STRING",
         "userProps":"Y",
         "util":"N",
         "xmlId":""
      }
   },
   "time":{
      "start":1712818736.235335,
      "finish":1712818736.611224,
      "duration":0.3758888244628906,
      "processing":0.18679594993591309,
      "date_start":"2024-04-11T09:58:56+03:00",
      "date_finish":"2024-04-11T09:58:56+03:00"
   }
}

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

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

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

HTTP-статус: 400

{
   "error":200840400001,
   "error_description":"property is not exists"
}

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

КодОписание
200840400001Обновляемое свойство отгрузки не найдено
200850000003Внутренняя ошибка обновления свойства
200850000009Ошибка возникает при попытке обновить свойство отгрузки со значением параметра multiple, выставленным в Y, в том случае, если не передан параметр isFiltered.
Фильтрация по множественным свойствам отгрузки не поддерживается
200850000010Ошибка возникает при попытке обновить свойство отгрузки со значением параметра multiple, выставленным в Y, в том случае, если значение параметра isFiltered не равно N.
Фильтрация по множественным свойствам отгрузки не поддерживается
200850000011Ошибка возникает при попытке обновить свойство отгрузки с типом LOCATION и значением параметра isLocation, выставленным в Y, в том случае, если значение параметра multiple не указано.
Не поддерживается множественность у свойств отгрузки, отмеченных индикатором isLocation
200850000012Ошибка возникает при попытке обновить свойство отгрузки с типом LOCATION и значением параметра isLocation, выставленным в Y, в том случае, если значение параметра multiple не равноN.
Не поддерживается множественность у свойств отгрузки, отмеченных индикатором isLocation
200850000013Ошибка возникает при попытке обновить свойство отгрузки с типом LOCATION и значением параметра isLocation4tax, выставленным в Y, в том случае, если значение параметра multiple не указано.
Не поддерживается множественность у свойств отгрузки, отмеченных индикатором isLocation4tax
200850000014Ошибка возникает при попытке обновить свойство отгрузки с типом LOCATION и значением параметра isLocation4tax, выставленным в Y, в том случае, если значение параметра multiple не равно N.
Не поддерживается множественность у свойств отгрузки, отмеченных индикатором isLocation4tax
200850000015Ошибка возникает при попытке обновить свойство отгрузки с типом STRING и значением параметра isProfileName, выставленным в Y, в том случае, если значение параметра required не указано.
Название профиля обязательно и не может быть пустым
200850000016Ошибка возникает при попытке обновить свойство отгрузки с типом STRING и значением параметра isProfileName, выставленным в Y, в том случае, если значение параметра required не равно Y.
Название профиля обязательно и не может быть пустым
200040300020Недостаточно прав для обновления свойства отгрузки
100Не указан параметр id
100Не указан или пустой параметр fields
0Не переданы обязательные поля
0Другие ошибки (например, фатальные ошибки)
  • [](./index)
  • [](./sale-shipment-property-add)
  • [](./sale-shipment-property-get)
  • [](./sale-shipment-property-list)
  • [](./sale-shipment-property-delete)
  • [](./sale-shipment-property-get-fields-by-type)

💡 Экспертное мнение и рекомендации

Практические рекомендации:

  • При написании кастомных компонентов для «Обновить свойство отгрузки sale.shipmentproperty.update» всегда разделяйте бизнес-логику и представление (шаблон).
  • Используйте отладку SQL-запросов через конструкцию $wpdb->last_query или стандартный трекер Битрикса, чтобы контролировать нагрузку.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Related Post

Добавить промпт ai.prompt.registerДобавить промпт ai.prompt.register

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Добавить промпт ai.prompt.register». Мы подготовили подробный разбор принципов работы и развернутые примеры интеграции. Добавить промпт

1С-Битрикс основные функции вывода в шаблонах1С-Битрикс основные функции вывода в шаблонах

В 1С-Битрикс основные и часто используемые функции вывода в шаблонах это: Некоторые из этих функций могут быть полезны при работе с шаблонами сайта. Например, функция AddBufferContent() может использоваться для добавления блока

Получить пользовательское поле сделок по id crm.deal.userfield.getПолучить пользовательское поле сделок по id crm.deal.userfield.get

Оптимизация производительности и безопасности — залог успешного проекта на 1С-Битрикс. Данный материал посвящен практическому применению «Получить пользовательское поле сделок по id crm.deal.userfield.get». Мы подготовили подробный разбор принципов работы и развернутые