Блог Горошко Андрея 1C-Битрикс,Bitrix24 Добавить свойство заказа sale.property.add

Добавить свойство заказа sale.property.add

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

Добавить свойство заказа sale.property.add

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

Метод добавляет свойство заказа.

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

Название
тип
Описание
fields
object
Значения полей для создания свойства заказа

Параметр fields

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

Название
тип
Описание
personTypeId
sale_person_type.id
Идентификатор типа плательщика
propsGroupId
sale_order_property_group.id
Идентификатор группы свойств
name
string
Название свойства заказа
type*
string
Тип свойства заказа.
Возможные значения:
— STRING
— Y/N
— NUMBER
— ENUM
— FILE
— DATE
— LOCATION
— ADDRESS
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 для разных типов свойств приведено ниже

Параметры, актуальные для свойств заказа типа 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

Параметр settings

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

Название
тип
Описание
minlength
integer
Минимально допустимая длина (кол-во символов) значения свойства заказа
maxlength
integer
Максимально допустимая длина (кол-во символов) значения свойства заказа
pattern
string
Регулярное выражение для проверки значения свойства заказа.
Примеры:
Регулярное выражение для проверки номера телефона «^((8\|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$«
Регулярное выражение для проверки написания даты в формате ДД/ММ/ГГГГ:
«^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$«
multiline
string
Индикатор необходимости отображения многострочного поля для ввода значения свойства.Возможные значения:
— Y — да
— N — нет

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

cols
integer
Устаревший параметр. Не используется
rows
integer
Устаревший параметр. Не используется
size
integer
Устаревший параметр. Не используется

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

Название
тип
Описание
min
integer
Минимально допустимое значение для данного свойства заказа
max
integer
Максимально допустимое значение для данного свойства заказа
step
integer
Шаг изменения значения. Используется в некоторых пользовательских интерфейсах для удобства изменения значения свойства заказа

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

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

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

size
integer
Количество отображаемых значений свойства заказа. Значение используется в некоторых пользовательских интерфейсах

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

Название
тип
Описание
maxsize
integer
Максимально допустимый размер загружаемого файла в байтах
accept
string
Список расширений файлов, которые допустимо загружать в значение данного свойства заказа. Пример: png, doc, zip

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

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

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

Примеры кода

  • cURL (Webhook)
    -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"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.property.add
  • cURL (OAuth)
    -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"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.property.add
  • JS
    try
    {
    	const response = await $b24.callMethod(
    		'sale.property.add', {
    			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.property.add',
                [
                    '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 adding property: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
    'sale.property.add', {
        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.property.add',
        [
            '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":1712818563.754118,
      "finish":1712818566.840385,
      "duration":3.0862669944763184,
      "processing":1.0286660194396973,
      "date_start":"2024-04-11T09:56:03+03:00",
      "date_finish":"2024-04-11T09:56:06+03:00"
   }
}

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

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

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

HTTP-статус: 400

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

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

КодОписание
200850000005Указано пустое значение для типа плательщика
200850000006Внутренняя ошибка добавления свойства
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Не указан или пустой параметр fields
0Не переданы обязательные поля
0Другие ошибки (например, фатальные ошибки)
  • [](./index)
  • [](./sale-property-update)
  • [](./sale-property-get)
  • [](./sale-property-list)
  • [](./sale-property-delete)
  • [](./sale-property-get-fields-by-type)

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

Ключевые выводы по теме «Добавить свойство заказа sale.property.add»:

Использование современных стандартов D7 при работе с sale.property.add позволяет писать чистый, масштабируемый и безопасный код. Не забывайте обрабатывать исключения (try/catch) и проверять права доступа текущего пользователя перед выполнением критических операций.

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

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

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

Related Post

Two Factor Auth: Руководство разработчикаTwo Factor Auth: Руководство разработчика

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

Как получить доступ к REST API?Как получить доступ к REST API?

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Как получить доступ к REST API?», разберем архитектурные

Настройка поиска ElasticSearch для каталога с 1 000 000+ товаров в БитриксНастройка поиска ElasticSearch для каталога с 1 000 000+ товаров в Битрикс

Профессиональная поддержка, модернизация и оптимизация производительности сайта на 1С-Битрикс — это гарантия высокой конверсии, стабильности продаж и защиты от киберугроз. Услуга «Настройка поиска ElasticSearch для каталога с 1 000 000+