Блог Горошко Андрея 1C-Битрикс,Bitrix24 Создать статус sale.status.add

Создать статус sale.status.add

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

Создать статус sale.status.add

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

Метод создает статус заказа или доставки.

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

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

Параметр fields

Название
тип
Описание
id
sale_status.id
Символьный идентификатор статуса.

Идентификатор статуса должен быть уникальным независимо от его типа. То есть нельзя добавить два статуса с одинаковым идентификатором (один для заказа, а другой для доставки)

type*
string
Тип статуса:
— O — статус заказа
— D — статус доставки
notify
string
Индикатор того, нужно ли отправлять почтовое уведомление пользователю, когда заказ или доставка переходят в этот статус.

Возможные значения:
— Y — оповещать
— N — не оповещать

sort
integer
Сортировка
color
string
HEX-код цвета статуса (например, #FF0000)
xmlId
string
Внешний код статуса.

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

Примеры кода

  • cURL (Webhook)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"fields":{"id":"MS","type":"O","notify":"Y","sort":500,"color":"#FF0000","xmlId":"myStatusXmlId"}}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/sale.status.add
  • cURL (OAuth)
    curl -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"fields":{"id":"MS","type":"O","notify":"Y","sort":500,"color":"#FF0000","xmlId":"myStatusXmlId"},"auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/sale.status.add
  • JS
    try
    {
    	const response = await $b24.callMethod(
    		'sale.status.add', {
    			fields: {
    				id: 'MS',
    				type: 'O',
    				notify: 'Y',
    				sort: 500,
    				color: '#FF0000',
    				xmlId: 'myStatusXmlId',
    			}
    		}
    	);
    	
    	const result = response.getData().result;
    	console.info(result);
    }
    catch( error )
    {
    	console.error(error);
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'sale.status.add',
                [
                    'fields' => [
                        'id'     => 'MS',
                        'type'   => 'O',
                        'notify' => 'Y',
                        'sort'   => 500,
                        'color'  => '#FF0000',
                        'xmlId'  => 'myStatusXmlId',
                    ],
                ]
            );
    
        $result = $response
            ->getResponseData()
            ->getResult();
    
        echo 'Success: ' . print_r($result, true);
        // Нужная вам логика обработки данных
        processData($result);
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error adding status: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        'sale.status.add', {
            fields: {
                id: 'MS',
                type: 'O',
                notify: 'Y',
                sort: 500,
                color: '#FF0000',
                xmlId: 'myStatusXmlId',
            }
        },
        function(result) {
            if (result.error()) {
                console.error(result.error());
            } else {
                console.info(result.data());
            }
        }
    );
  • PHP CRest
    require_once('crest.php');

    $result = CRest::call('sale.status.add', [
        'fields' => [
            'id' => 'MS',
            'type' => 'O',
            'notify' => 'Y',
            'sort' => 500,
            'color' => '#FF0000',
            'xmlId' => 'myStatusXmlId',
        ]
    ]);

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

Обработка ответа

HTTP-статус: 200

{
    "result":{
        "status":{
            "color":"#FF0000",
            "id":"MS",
            "notify":"Y",
            "sort":500,
            "type":"O",
            "xmlId":"myStatusXmlId"
        }
    },
    "time":{
        "start":1712137817.343984,
        "finish":1712137817.605804,
        "duration":0.26182007789611816,
        "processing":0.018325090408325195,
        "date_start":"2024-04-03T12:50:17+03:00",
        "date_finish":"2024-04-03T12:50:17+03:00"
    }
}

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

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

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

HTTP-статус: 400

{
    "error":201350000001,
    "error_description":"Duplicate entry for key [id]"
}

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

КодОписание
201350000001Статус с переданным идентификатором уже существует
201350000003Не передано значение типа статуса или переданное значение некорректно
201350000004Передано пустое значение идентификатора статуса
201350000005Превышено ограничение длины идентификатора статуса
200040300020Недостаточно прав для добавления статуса
100Не указан или пустой параметр fields
0Не переданы обязательные поля
0Другие ошибки (например, фатальные ошибки)
  • [](./index)
  • [](./sale-status-update)
  • [](./sale-status-get)
  • [](./sale-status-list)
  • [](./sale-status-delete)
  • [](./sale-status-get-fields)

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

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

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

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

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

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

Related Post

Разработка системы резервирования товаров под тендерные закупки (44-ФЗ и 223-ФЗ)Разработка системы резервирования товаров под тендерные закупки (44-ФЗ и 223-ФЗ)

Разработка и внедрение профессионального B2B-портала и дилерского кабинета на 1С-Битрикс позволяет кардинально сократить издержки отдела оптовых продаж, перевести дилеров на самообслуживание 24/7 и исключить ошибки ручного ввода заказов. Услуга «Разработка

Удалить документ crm.documentgenerator.document.deleteУдалить документ crm.documentgenerator.document.delete

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

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

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