sale.order.add
Добавить заказ
Описание
Метод 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
необязательный
Идентификатор клиента
Примеры запроса
-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_webhook_here**/sale.order.add
-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
// 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, ISODate } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
// Shape of the payload returned in result (match the "response handling" section of the page)
type OrderResult = {
order: {
accountNumber: string
additionalInfo: string
affiliateId: number
canceled: string
clients: unknown[]
comments: string
companyId: number
currency: string
dateCanceled: ISODate | null
dateInsert: ISODate | null
dateMarked: ISODate | null
dateStatus: ISODate | null
dateUpdate: ISODate | null
deducted: string
discountValue: number
empCanceledId: number
empMarkedId: number
empStatusId: number
externalOrder: string
id: number
id1c: string
lid: string
lockedBy: string
marked: string
orderTopic: string
payed: string
personTypeId: number
personTypeXmlId: string
price: number
reasonCanceled: string
reasonMarked: string
recountFlag: string
recurringId: string
requisiteLink: unknown[]
responsibleId: number
statusId: string
statusXmlId: string
updated1c: string
userDescription: string
userId: number
version1c: string
xmlId: string
}
}
try {
const response = await $b24.actions.v2.call.make<OrderResult>({
method: 'sale.order.add',
params: {
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,
},
},
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(result.order.id, result.order.accountNumber)
}
} 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 addOrder() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'sale.order.add',
params: {
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,
},
},
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(result.order.id, result.order.accountNumber)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', addOrder)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
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,
}
try:
bitrix_response = client.sale.order.add(
fields=fields,
).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.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.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());
}
);
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>';
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "sale.order.add", b24.Params{
"fields": b24.Params{
"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,
},
})
if err != nil {
return fmt.Errorf("sale.order.add: %w", err)
}
// Метод заворачивает ответ в объект с ключом "order".
raw, ok := b24.Unwrap(res.Result, "order")
if !ok {
return fmt.Errorf("в ответе нет ключа order")
}
var item struct {
AccountNumber string `json:"accountNumber"`
AdditionalInfo string `json:"additionalInfo"`
AffiliateID b24.ID `json:"affiliateId"`
Canceled string `json:"canceled"`
Comments string `json:"comments"`
CompanyID b24.ID `json:"companyId"`
}
if err := json.Unmarshal(raw, &item); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println(item.AccountNumber, item.AdditionalInfo)
Ответ
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 |
Другие ошибки (например, фатальные ошибки) |

