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

Добавить заказ sale.order.add

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

Добавить заказ sale.order.add

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

Метод sale.order.add предназначен для добавления заказа.

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

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

Параметр fields

Название
тип
Описание
lid
string
Идентификатор сайта, на котором будет использоваться данный тип плательщика. Имеет постоянное значение ‘s1’
personTypeId
sale_person_type.id
Идентификатор типа плательщика
currency
string
Валюта. Список валют можно получить через метод crm.currency.list
price
double
Цена
discountValue
double
Значение скидки
statusId
sale_status.id
Идентификатор статуса заказа
empStatusId
user.id
Идентификатор пользователя, изменившего статус заказа
dateInsert
datetime
Дата создания заказа
marked
string
Флаг маркировки. Признак того, является ли отгрузка отмеченной как проблемная. Значение Y ставится автоматически, если при сохранении произошла ошибка.

— Y — да
— N — нет

По умолчанию устанавливается N

empMarkedId
user.id
Идентификатор пользователя, поставившего маркировку
reasonMarked
string
Причина, по которой заказ был промаркирован
userDescription
string
Комментарий покупателя к заказу
additionalInfo
string
Устаревший.

Дополнительная информация

comments
string
Комментарий менеджера к заказу
responsibleId
user.id
Идентификатор пользователя, ответственного за заказ
recurringId
integer
Идентификатор продления подписки
lockedBy
user.id
Актуально только для коробочной версии.

Идентификатор пользователя, заблокировавшего заказ. Заказ блокируется в административной панели, когда пользователь открывает детальную карточку заказа

recountFlag
string
Устаревший.

Флаг пересчёта.

— Y — да
— N — нет

По умолчанию устанавливается Y

affiliateId
integer
Актуально только для коробочной версии.

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

updated1c
string
Обновлён ли через 1С.

— Y — да
— N — нет

По умолчанию устанавливается N

orderTopic
string
Устаревший.

Тема заказа

xmlId
string
Внешний идентификатор
id1c
string
Идентификатор в 1С
version1c
string
Версия в 1с
externalOrder
string
Заказ из внешней системы или нет.

— Y — да
— N — нет

По умолчанию устанавливается N

canceled
string
Был ли отменен заказ.

— Y — да
— N — нет

По умолчанию устанавливается N

empCanceledId
user.id
Идентификатор пользователя, отменившего заказ
reasonCanceled
string
Причина отмены
userId
user.id
Идентификатор клиента

Примеры кода

  • cURL (Webhook)
    -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"fields":{"lid":"s1","personTypeId":1,"currency":"RUB","price":100,"discountValue":10,"statusId":"N","empStatusId":1,"dateInsert":"2024-03-01T14:00:00","marked":"Y","empMarkedId":1,"reasonMarked":"","userDescription":"","additionalInfo":"","comments":"","companyId":1,"responsibleId":1,"recurringId":1,"lockedBy":1,"recountFlag":"N","affiliateId":1,"updated1c":"N","orderTopic":"","xmlId":"","id1c":"","version1c":"","externalOrder":"N","canceled":"Y","empCanceledId":1,"reasonCanceled":"","userId":1}}' \
    https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webbhook_here**/sale.order.add
  • cURL (OAuth)
    -X POST \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"fields":{"lid":"s1","personTypeId":1,"currency":"RUB","price":100,"discountValue":10,"statusId":"N","empStatusId":1,"dateInsert":"2024-03-01T14:00:00","marked":"Y","empMarkedId":1,"reasonMarked":"","userDescription":"","additionalInfo":"","comments":"","companyId":1,"responsibleId":1,"recurringId":1,"lockedBy":1,"recountFlag":"N","affiliateId":1,"updated1c":"N","orderTopic":"","xmlId":"","id1c":"","version1c":"","externalOrder":"N","canceled":"Y","empCanceledId":1,"reasonCanceled":"","userId":1},"auth":"**put_access_token_here**"}' \
    https://**put_your_bitrix24_address**/rest/sale.order.add
  • JS
    try
    {
    	const response = await $b24.callMethod(
    		'sale.order.add',
    		{
    			fields: {
    				lid: 's1',
    				personTypeId: 1,
    				currency: 'RUB',
    				price: 100,
    				discountValue: 10,
    				statusId: 'N',
    				empStatusId: 1,
    				dateInsert: '2024-03-01T14:00:00',
    				marked: 'Y',
    				empMarkedId: 1,
    				reasonMarked: '',
    				userDescription: '',
    				additionalInfo: '',
    				comments: '',
    				companyId: 1,
    				responsibleId: 1,
    				recurringId: 1,
    				lockedBy: 1,
    				recountFlag: 'N',
    				affiliateId: 1,
    				updated1c: 'N',
    				orderTopic: '',
    				xmlId: '',
    				id1c: '',
    				version1c: '',
    				externalOrder: 'N',
    				canceled: 'Y',
    				empCanceledId: 1,
    				reasonCanceled: '',
    				userId: 1,
    			}
    		}
    	);
    	
    	const result = response.getData().result;
    	console.log(result);
    }
    catch(error)
    {
    	console.error(error);
    }
  • PHP
    try {
        $response = $b24Service
            ->core
            ->call(
                'sale.order.add',
                [
                    'fields' => [
                        'lid'            => 's1',
                        'personTypeId'   => 1,
                        'currency'       => 'RUB',
                        'price'          => 100,
                        'discountValue'  => 10,
                        'statusId'       => 'N',
                        'empStatusId'    => 1,
                        'dateInsert'     => '2024-03-01T14:00:00',
                        'marked'         => 'Y',
                        'empMarkedId'    => 1,
                        'reasonMarked'   => '',
                        'userDescription' => '',
                        'additionalInfo' => '',
                        'comments'       => '',
                        'companyId'      => 1,
                        'responsibleId'  => 1,
                        'recurringId'    => 1,
                        'lockedBy'       => 1,
                        'recountFlag'    => 'N',
                        'affiliateId'    => 1,
                        'updated1c'      => 'N',
                        'orderTopic'     => '',
                        'xmlId'          => '',
                        'id1c'           => '',
                        'version1c'      => '',
                        'externalOrder'  => 'N',
                        'canceled'       => 'Y',
                        'empCanceledId'  => 1,
                        'reasonCanceled' => '',
                        'userId'         => 1,
                    ],
                ]
            );
    
        $result = $response
            ->getResponseData()
            ->getResult();
    
        echo 'Success: ' . print_r($result, true);
    
    } catch (Throwable $e) {
        error_log($e->getMessage());
        echo 'Error adding order: ' . $e->getMessage();
    }
  • BX24.js
    BX24.callMethod(
        'sale.order.add',
        {
            fields: {
                lid: 's1',
                personTypeId: 1,
                currency: 'RUB',
                price: 100,
                discountValue: 10,
                statusId: 'N',
                empStatusId: 1,
                dateInsert: '2024-03-01T14:00:00',
                marked: 'Y',
                empMarkedId: 1,
                reasonMarked: '',
                userDescription: '',
                additionalInfo: '',
                comments: '',
                companyId: 1,
                responsibleId: 1,
                recurringId: 1,
                lockedBy: 1,
                recountFlag: 'N',
                affiliateId: 1,
                updated1c: 'N',
                orderTopic: '',
                xmlId: '',
                id1c: '',
                version1c: '',
                externalOrder: 'N',
                canceled: 'Y',
                empCanceledId: 1,
                reasonCanceled: '',
                userId: 1,
            }
        },
        function(result)
        {
            if(result.error())
                console.error(result.error());
            else
                console.log(result.data());
        }
    );
  • PHP CRest
    require_once('crest.php');

    $result = CRest::call(
        'sale.order.add',
        [
            'fields' => [
                'lid' => 's1',
                'personTypeId' => 1,
                'currency' => 'RUB',
                'price' => 100,
                'discountValue' => 10,
                'statusId' => 'N',
                'empStatusId' => 1,
                'dateInsert' => '2024-03-01T14:00:00',
                'marked' => 'Y',
                'empMarkedId' => 1,
                'reasonMarked' => '',
                'userDescription' => '',
                'additionalInfo' => '',
                'comments' => '',
                'companyId' => 1,
                'responsibleId' => 1,
                'recurringId' => 1,
                'lockedBy' => 1,
                'recountFlag' => 'N',
                'affiliateId' => 1,
                'updated1c' => 'N',
                'orderTopic' => '',
                'xmlId' => '',
                'id1c' => '',
                'version1c' => '',
                'externalOrder' => 'N',
                'canceled' => 'Y',
                'empCanceledId' => 1,
                'reasonCanceled' => '',
                'userId' => 1,
            ]
        ]
    );

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

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

HTTP-статус: 200

{
    "result": {
        "order": {
            "accountNumber": "455",
            "additionalInfo": "",
            "affiliateId": 1,
            "canceled": "Y",
            "clients": [],
            "comments": "",
            "companyId": 1,
            "currency": "RUB",
            "dateCanceled": "2024-04-12T13:50:21+03:00",
            "dateInsert": "2024-03-01T13:00:00+03:00",
            "dateMarked": "2024-04-12T13:50:21+03:00",
            "dateStatus": "2024-04-12T13:50:21+03:00",
            "dateUpdate": "2024-04-12T13:50:21+03:00",
            "deducted": "N",
            "discountValue": 10,
            "empCanceledId": 1,
            "empMarkedId": 1,
            "empStatusId": 1,
            "externalOrder": "N",
            "id": 299,
            "id1c": "",
            "lid": "s1",
            "lockedBy": "1",
            "marked": "Y",
            "orderTopic": "",
            "payed": "N",
            "personTypeId": 1,
            "personTypeXmlId": "",
            "price": 100,
            "reasonCanceled": "",
            "reasonMarked": "",
            "recountFlag": "N",
            "recurringId": "1",
            "requisiteLink": [],
            "responsibleId": 1,
            "statusId": "N",
            "statusXmlId": "",
            "updated1c": "N",
            "userDescription": "",
            "userId": 1,
            "version1c": "",
            "xmlId": ""
        }
    },
    "time": {
        "start": 1712922620.724857,
        "finish": 1712922623.393783,
        "duration": 2.6689260005950928,
        "processing": 2.210068941116333,
        "date_start": "2024-04-12T14:50:20+03:00",
        "date_finish": "2024-04-12T14:50:23+03:00"
    }
}

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

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

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

HTTP-статус: 400

{
    "error":200040300020,
    "error_description":"Access Denied"
}

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

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

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

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

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

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

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

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

Related Post

Получить доступные поля единиц измерения catalog.measure.getFieldsПолучить доступные поля единиц измерения catalog.measure.getFields

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

Исправление ошибок в модуле интернет-магазина (Sale / Catalog)Исправление ошибок в модуле интернет-магазина (Sale / Catalog)

Профессиональная поддержка, модернизация и оптимизация производительности сайта на 1С-Битрикс — это гарантия высокой конверсии, стабильности продаж и защиты от киберугроз. Услуга «Исправление ошибок в модуле интернет-магазина (Sale / Catalog)» включает

Покинуть чат im.chat.leaveПокинуть чат im.chat.leave

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Покинуть чат im.chat.leave». Вы узнаете экспертные методики работы с im.chat.leave и научитесь избегать