Отчёт по заказам
Цифра отдаёт в 1С завершённые заказы за период — с составом заказа, участниками сделки и вложенным массивом отгрузок. Метод опрашивает 1С, когда нужно закрыть период реализациями.
1С отправляет период, Цифра возвращает массив заказов Data[]. Тот же эндпоинт описан на странице создания заказов — здесь его структура разобрана полностью.
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
SecretKey | string | Да | Секретный ключ |
StartDate | datetime | Да | Начало периода |
EndDate | datetime | Да | Окончание периода |
- Формат дат —
ГГГГ-ММ-ДД ЧЧ:ММ:СС. Запись 1С через точки (2026.04.30 00:00:00) тоже принимается: разделитель нормализуется на стороне сервиса - Обе границы включительно, сравнение идёт по дате отгрузки заказа
StartDateиEndDateтрактуются в московском времени (GMT+3) независимо от часового пояса завода, а даты в ответе приходят уже в поясе завода- Обе границы обязательны: без
StartDateили безEndDateзапрос отклоняется ответом422и выборка не выполняется - Ключ проверяется первым — при неверном
SecretKeyприходит403ещё до разбора дат - Неразбираемая дата (например
«вчера») до фильтра не доходит: запрос завершается ответом422
- В выборку попадают заказы заводов, привязанных к
SecretKey, у которых дата отгрузки лежит в периоде - Отдаются только завершённые заказы —
Statusвсегдаcompleted. Заказы в работе, отменённые и черновики в отчёт не попадают - Внутри заказа
Applicationsсодержит только выполненные (done) и не удалённые отгрузки; заказ без таких отгрузок вернётся с пустым массивом. В заданииcreateOrderэтот же массив приходит с отгрузками в любом статусе — см. Статусы отгрузки Guidзаказа заполняется после того, как 1С выполнит заданиеcreateOrder; до этого приходитnull- Перед отдачей Цифра сверяет
Guidвложенных сущностей с интеграционной единицей ключа: чужойGuidобнуляется, а при наличии связи подставляется 1С-аналог — сразуId,NameиGuidодним блоком - Если заказов за период нет, приходит
200с пустымData, а не ошибка
Структура Data[]
Один элемент массива — один заказ. «Обязательное» означает, что ключ всегда присутствует в ответе; значение при этом может быть null.
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
Id | integer | Да | ID заказа в Цифре |
Guid | string|null | Да | GUID заказа в 1С |
Doc | string | Да | Номер заказа |
ShortNumber | string | Да | Короткий номер заказа |
Name | string|null | Да | Полное имя заказа |
Total | float | Да | Объём заказа, м³ |
Type | string | Да | Тип отгрузки |
Status | string | Да | Статус заказа |
PaymentMethod | string | Да | Способ оплаты |
DeliveryType | string | Да | Тип доставки |
Date | datetime | Да | Дата и время заказа |
FirstOrderTimeDelivery | string | Да | Время первой отгрузки |
Comment | string|null | Да | Комментарий диспетчера |
Recipe |
Да | Рецепт — основной товар заказа | |
Client |
Да | Контрагент-заказчик | |
Products |
Да | Дополнительные товары заказа | |
Services |
Да | Услуги заказа | |
Zone |
Да | Зона доставки | |
Delivery |
Да | Доставка по заказу | |
Seller |
Да | Продавец | |
Carrier |
Да | Перевозчик | |
Manager |
Да | Менеджер заказа | |
Dispatcher |
Да | Диспетчер, оформивший заказ | |
Spec |
Да | Спецификация заказа | |
Contract |
Да | Договор | |
Invoice |
Да | Счёт | |
Applications |
Да | Отгрузки заказа | |
Pumps |
Да | Бетононасосы заказа | |
ConstructionObject |
Условно | Объект строительства (CRM-проект) |
Statusзаказа в этом отчёте всегдаcompleted,Statusотгрузки — всегдаdone: другие статусы в выборку не попадают. В заданииcreateOrderтот же массивApplicationsприходит с отгрузками в любом статусе — незавершённые могут измениться или исчезнуть, см. Статусы отгрузкиTypeиDeliveryType— одно и то же значение (delivery,take-away);DeliveryTypeоставлен для совместимостиDateзаказа собирается из даты отгрузки и времени первой отгрузки,FirstOrderTimeDelivery— то же время в форматеЧЧ:ММ:СС; обе величины уже в часовом поясе заводаShortNumber— хвост поляNameначиная с первой заглавной буквы: из«250801Д10»получается«Д10»- Служебный
IntegrationUnitIdво вложенных блоках заказа (Recipe,Client,Seller,Carrier,Products,Services,Contract,Invoice) не приходит — он вырезается перед отдачей. Связь с 1С устанавливается поGuid CharacteristicGuid— вторая частьsoft_idноменклатуры, отделённая пробелом;null, если у товара нет характеристики. ВServicesключ появляется только тогда, когда GUID удалось разрешить по тарифу или номенклатуреRowNumberпроставляется сквозной нумерацией по всей выборке отчёта: сначала нумеруются строкиProductsвсех заказов, затем строкиServices. Внутри одного заказа номера возрастают, но не обязательно идут подряд и не обязательно начинаются с единицыApplicationв строкеProductsилиServices— та же отгрузка, что и в массивеApplications, если строка привязана к конкретной отгрузке; у строк уровня заказа приходитnull- Ненайденная связь приходит объектом-заглушкой с
Id: 0иnullв остальных полях, а неnullвместо объекта. Исключение —Zone: если зона доставки не задана, приходитnull ConstructionObjectприходит пустым массивом[], если CRM-проект к заказу не привязан. Ключ отсутствует целиком, если в настройках интеграционной единицы выключена передача объектов строительства (по умолчанию включена)Materialsу отгрузок этот отчёт не наполняет — всегда приходит пустым массивом. Фактический расход материалов отдаёт метод application/materials
- Искать
IntegrationUnitIdвнутриRecipe,Client,ProductsилиServices— ключа в ответе нет, сопоставление идёт поGuid - Считать период в часовом поясе завода — границы
StartDateиEndDateразбираются в московском времени, поэтому у заводов в других поясах края периода смещаются - Не передать
StartDateилиEndDate— запрос отклоняется ответом422, отчёт не строится - Ждать в отчёте заказ, который ещё не закрыт, — до перехода в
completedзаказ не выгружается, даже если отгрузки по нему уже выполнены
{
"SecretKey": "2akgzOCYsAxLwpNl",
"StartDate": "2024-12-01 00:00:00",
"EndDate": "2024-12-12 23:59:59"
}
curl -X POST https://1c.cifra.ai/api/orders/report \
-H "Content-Type: application/json" \
-d '{
"SecretKey": "2akgzOCYsAxLwpNl",
"StartDate": "2024-12-01 00:00:00",
"EndDate": "2024-12-12 23:59:59"
}'
1С принимает и запись даты через точки: 2024.12.01 00:00:00.
{
"Message": null,
"Success": true,
"Data": [
{
"Id": 567,
"Guid": "22db4291-154f-11ec-973e-244bfecb4e0a",
"Doc": "Z-123",
"ShortNumber": "Д10",
"Name": "250801Д10",
"Total": 24.0,
"Type": "delivery",
"Status": "completed",
"PaymentMethod": "bankWithVAT",
"DeliveryType": "delivery",
"Date": "2024-12-09 08:00:00",
"FirstOrderTimeDelivery": "08:00:00",
"Comment": "Подъезд со стороны главного входа",
"Recipe": {
"Id": 45,
"Guid": "33ab5192-265a-11ec-a84f-355cbfdc5f1b",
"CharacteristicGuid": "44bc6203-376b-11ec-b95c-466dbcde6d2d",
"Name": "БСТ В25П4F200",
"Price": 4500.0
},
"Client": {
"Id": 123,
"Guid": "44cd6203-376b-11ec-b95c-466dbcde6c2c",
"Name": "ООО Заказчик",
"Inn": "7604377806"
},
"Products": [
{
"Id": 78,
"ServiceId": 501,
"RowNumber": 1,
"Guid": "55de7314-487c-11ec-c06d-577ebcef7e3e",
"CharacteristicGuid": null,
"Name": "Пластификатор",
"Price": 150.0,
"Sum": 300.0,
"Quantity": 2.0,
"VatRate": "20%",
"VatInPrice": true,
"Application": null
}
],
"Services": [
{
"Id": 502,
"RowNumber": 2,
"Guid": "66ef8425-598d-11ec-d17e-688fbcfa8f4f",
"CharacteristicGuid": null,
"Name": "Доставка бетона",
"Price": 2500.0,
"Sum": 2500.0,
"Quantity": 1.0,
"VatRate": "20%",
"VatInPrice": true,
"Application": null
}
],
"Zone": {
"Id": 10,
"Guid": "77fa9536-609e-11ec-e28f-799abcda9a5a",
"Name": "Зона 1 (до 10 км)"
},
"Delivery": {
"Address": "Тула, Менделеевская улица, 12В",
"Price": 2500.0
},
"Seller": {
"Id": 5,
"Guid": "88ab0647-710f-11ec-f39a-800bcdea0b6b",
"Name": "ООО Бетонный Завод",
"Inn": "7604123456"
},
"Carrier": {
"Id": 12,
"Guid": "99bc1758-821a-11ec-a40b-911cdefb1c7c",
"Name": "ООО Транспортная Компания",
"Inn": "7604654321"
},
"Manager": {
"Id": 25,
"Name": "Иванов Иван Иванович",
"Phone": "+7 (900) 123-45-67"
},
"Dispatcher": {
"Id": 31,
"Name": "Сидоров Сергей Сергеевич",
"Phone": "+7 (900) 765-43-21"
},
"Spec": {
"Id": 34,
"Guid": "00cd2869-932b-11ec-b51c-022defac2d8d",
"CharacteristicGuid": null,
"Name": "Автобетононасос 42м",
"IntegrationUnitId": 1
},
"Contract": {
"Id": 18,
"Guid": "11de3970-043c-11ec-c62d-133efabd3e9e",
"Name": "Договор №123 от 01.01.2024"
},
"Invoice": {
"Id": 42,
"Guid": "22ef4081-154d-11ec-d73e-244fabce4f0f",
"Name": "Счет №456"
},
"Applications": [
{
"Id": 12345,
"Doc": "Z-123-1",
"Guid": "33fa5192-265e-11ec-e84f-355abcdf5a1a",
"IntegrationUnitId": 1,
"MixId": 1001,
"ShortNumber": "Д10-1",
"Name": "250801Д10-1",
"Total": 12.0,
"TotalClient": 12.0,
"Type": "delivery",
"Status": "done",
"PaymentMethod": "bankWithVAT",
"Date": "2024-12-09 08:30:00",
"StartAt": "2024-12-09 08:45:00",
"ReturnAt": "2024-12-09 10:05:00",
"Recipe": {
"Id": 45,
"Guid": "33ab5192-265a-11ec-a84f-355cbfdc5f1b",
"CharacteristicGuid": "44bc6203-376b-11ec-b95c-466dbcde6d2d",
"Name": "БСТ В25П4F200",
"Price": 4500.0
},
"Client": {
"Id": 123,
"Guid": "44cd6203-376b-11ec-b95c-466dbcde6c2c",
"Name": "ООО Заказчик",
"Inn": "7604377806"
},
"Products": [],
"Services": [],
"Zone": {
"Id": 10,
"Guid": "77fa9536-609e-11ec-e28f-799abcda9a5a",
"Name": "Зона 1 (до 10 км)"
},
"Delivery": {
"Address": "Тула, Менделеевская улица, 12В",
"Distance": 8.5,
"DistanceToObjectPlan": 8.2,
"OnObjectTime": 30.0,
"Price": 1250.0
},
"Seller": {
"Id": 5,
"Guid": "88ab0647-710f-11ec-f39a-800bcdea0b6b",
"Name": "ООО Бетонный Завод",
"Inn": "7604123456"
},
"Carrier": {
"Id": 12,
"Guid": "99bc1758-821a-11ec-a40b-911cdefb1c7c",
"Name": "ООО Транспортная Компания",
"Inn": "7604654321"
},
"Car": {
"Id": 8,
"Guid": "44ab6203-376f-11ec-f95a-466bcdea6b2b",
"CarNumber": "А123БВ177",
"Volume": 12.0,
"Rent": false
},
"Driver": {
"Id": 15,
"Guid": null,
"Name": "Петров Петр Петрович"
},
"Manager": {
"Id": 25,
"Name": "Иванов Иван Иванович",
"Phone": "+7 (900) 123-45-67"
},
"Dispatcher": {
"Id": 31,
"Name": "Сидоров Сергей Сергеевич",
"Phone": "+7 (900) 765-43-21"
},
"Spec": {
"Id": 34,
"Guid": "00cd2869-932b-11ec-b51c-022defac2d8d",
"CharacteristicGuid": null,
"Name": "Автобетононасос 42м"
},
"Contract": {
"Id": 18,
"Guid": "11de3970-043c-11ec-c62d-133efabd3e9e",
"Name": "Договор №123 от 01.01.2024"
},
"Invoice": {
"Id": 42,
"Guid": "22ef4081-154d-11ec-d73e-244fabce4f0f",
"Name": "Счет №456"
},
"Materials": []
}
],
"Pumps": [],
"ConstructionObject": {
"Id": 101,
"Name": "ЖК Солнечный, корпус 3",
"Guid": "aabbccdd-1122-3344-5566-77889900aabb"
}
}
]
}
Заказ может содержать несколько отгрузок — здесь показана одна. Строки Products и Services уровня заказа приходят с "Application": null; у строки, привязанной к отгрузке, в этом поле лежит тот же объект, что и в массиве Applications.
Коды ответов
| Код | Описание |
|---|---|
| 200 | Отчёт сформирован. Data может быть пустым массивом |
| 403 | Секретный ключ не найден |
| 405 | Запрос отправлен методом, отличным от POST |
| 422 | Период выборки не указан или дата в неверном формате |
| 500 | Внутренняя ошибка сервиса |
Структура ответа
| Поле | Тип | Описание |
|---|---|---|
Success | boolean | Признак успешной обработки |
Message | string|null | Текст ошибки; при успехе null |
Data | array|null | Массив заказов |
- Ключи конверта — с заглавной буквы:
Success,Message,Data. Методы приёмки данных (api/*/create,changeTaskStatus) отвечают в нижнем регистре — разбор у них разный - В ответе
403ключаDataнет вообще: приходят толькоMessageиSuccess. В остальных ошибкахDataприсутствует со значениемnull - Отказ всегда сопровождается HTTP-кодом ошибки — ответов
200сSuccess: falseу этого метода нет
Примеры ответов
{
"Message": null,
"Success": true,
"Data": []
}
Пустой Data означает, что за период нет завершённых заказов — это не ошибка. Ответ с заполненным заказом целиком показан в табе «Примеры».
{
"Message": "Секретный ключ не найден",
"Success": false
}
Тот же ответ приходит, когда SecretKey вообще не передан. Ключа Data в этом ответе нет.
{
"Success": false,
"Message": "Метод запроса не поддерживается",
"Data": null
}
Эндпоинт принимает только POST с телом в JSON.
{
"Success": false,
"Message": "Не указан период выборки: обязательны StartDate и EndDate",
"Data": null
}
Приходит, когда в запросе нет StartDate или EndDate. Достаточно одной пропущенной границы — выборка не выполняется, отчёт не строится.
{
"Success": false,
"Message": "Некорректный формат даты: StartDate и EndDate ожидаются в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС",
"Data": null
}
Дата передана, но сервис не смог её разобрать — например «вчера». Запись 1С через точки (2024.12.01 00:00:00) к этой ошибке не приводит: разделитель нормализуется.
{
"Success": false,
"Message": "Произошла внутренняя ошибка",
"Data": null
}
Подробности наружу не уходят — причина фиксируется на стороне Цифры. Если ошибка повторяется, обратитесь в поддержку и укажите запрошенный период.