Отчёт по отгрузкам
Цифра отдаёт в 1С завершённые отгрузки (реализации) за период: состав товаров и услуг, контрагентов, транспорт, доставку и расход сырья. На основании отчёта 1С строит документы реализации.
Запрос отправляет 1С, данные едут обратно: в ответе приходит массив Data[], по одному элементу на отгрузку. Секретный ключ определяет, отгрузки каких заводов попадут в отчёт.
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
SecretKey | string | Да | Секретный ключ |
StartDate | datetime | Да | Начало периода |
EndDate | datetime | Да | Окончание периода |
- Формат даты —
ГГГГ-ММ-ДД ЧЧ:ММ:СС. Точки в дате 1С (2026.04.30 00:00:00) нормализуются автоматически - Даты трактуются в часовом поясе завода, границы периода включительные
- Период фильтрует отгрузки по дате создания записи в Цифре, а не по дате загрузки миксера
- Обе границы обязательны: без
StartDateили безEndDateзапрос отклоняется ответом422и выборка не выполняется - Неразбираемая дата тоже завершается ответом
422; при неверномSecretKeyраньше приходит403— ключ проверяется первым - Секретный ключ задаёт список заводов (
MixId) и подразделение интеграции, по которому подбираются 1С-аналоги номенклатур, контрагентов и техники
- Успешный ответ приходит с кодом
207, а не200— проверять нужно и код, и полеSuccess - В отчёт попадают только завершённые (
done) и не удалённые отгрузки заводов, привязанных к ключу - Отгрузок за период может не быть — тогда
Dataприходит пустым массивом, аSuccessостаётсяtrue - Даты в ответе конвертируются из UTC в часовой пояс завода
- Перед отдачей Цифра подставляет 1С-аналоги номенклатур, контрагентов и техники по связям подразделения интеграции: если аналог найден, в блоке приходят его
Id,NameиGuid Guidв любом блоке — идентификатор уже синхронизированной с 1С сущности; пока синхронизации не было, приходитnull
Структура Data[]
Элемент массива Data из конверта ответа — одна отгрузка. Строки со стрелкой раскрывают вложенный объект.
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
Id | integer | Да | ID отгрузки в Цифре |
Doc | string|null | Нет | Номер документа в программе бетонного завода |
Guid | string|null | Нет | GUID реализации в 1С |
IntegrationUnitId | integer|null | Нет | ID подразделения интеграции |
MixId | integer | Да | ID бетонного завода |
ShortNumber | string | Нет | Короткий номер отгрузки |
Name | string|null | Нет | Полный номер отгрузки |
Total | float | Да | Фактический объём отгрузки |
TotalClient | float | Да | Объём в документах для клиента |
Type | string | Да | Тип отгрузки |
Status | string | Да | Статус отгрузки |
PaymentMethod | string|null | Нет | Способ оплаты |
Date | datetime | Да | Окончание загрузки миксера |
StartAt | datetime|null | Нет | Начало загрузки миксера |
ReturnAt | datetime|null | Нет | Возврат машины на завод |
Recipe |
Да | Рецепт бетона | |
Client |
Да | Контрагент-покупатель | |
Products |
Да | Товары в отгрузке | |
Services |
Да | Услуги в отгрузке | |
Zone |
Нет | Зона доставки | |
Delivery |
Да | Доставка | |
Seller |
Да | Организация-продавец | |
Carrier |
Да | Организация-перевозчик | |
Car |
Да | Транспортное средство | |
Driver |
Да | Водитель миксера | |
Manager |
Нет | Менеджер заказа | |
Dispatcher |
Нет | Диспетчер, оформивший заказ | |
Spec |
Нет | Спецификация — дополнительная номенклатура заказа | |
Contract |
Да | Договор | |
Invoice |
Да | Счёт | |
Materials |
Да | Расход сырья по отгрузке | |
Pumps |
Условно | Насосы заказа |
Type—delivery(доставка),take-away(самовывоз),production(производство)Status— в отчёт попадают только завершённые отгрузки, поэтому фактически всегда приходитdone. Полный перечень значений и то, чем опасны незавершённые отгрузки, — в разделе Статусы отгрузкиPaymentMethod—bankWithVAT,bankWithoutVAT,cashbox,cash,transfer;null, если способ оплаты у отгрузки не заданTotalиTotalClient— в кубометрах.TotalClientравенTotal, если объём для документов клиента отдельно не задавалиDate,StartAt,ReturnAt— форматГГГГ-ММ-ДД ЧЧ:ММ:СС. Часовой пояс определяется по первому заводу из настроек ключа и применяется ко всем строкам отчётаShortNumber— часть полного номера начиная с первой заглавной буквы: из250801Д10-5получаетсяД10-5Guidотгрузки заполняется после того, как 1С отчиталась по заданиюcreateApplication;IntegrationUnitId— только при настроенной связи с конкретным подразделением 1СIntegrationUnitIdесть только на верхнем уровне отгрузки: во вложенных объектах он служебный и в ответ не попадаетRowNumberсквозной по обеим табличным частям: сначала нумеруются строкиProducts, затемServicesVatRate— строка с процентом («20%»,«0%»). ПриVatInPrice: trueНДС уже включён вPriceиSum- В
Productsпопадают строки товаров, вServices— строки услуг: перевозка, простой и работа насоса Materials[].Guid— GUID связанной номенклатуры 1С, если для сырья настроена связь и у номенклатуры заполнен идентификатор; тогдаIdиNameстроки тоже приходят от неё. Если связи нет, приходит собственный идентификатор сырья, аIdиNameостаются от сырья Цифры- Собственный идентификатор сырья приходит в том виде, в каком его ведёт завод, — это может быть короткая строка вида
ag11, а не GUID. Сопоставлять такое значение нужно по точному совпадению, формат не гарантирован.nullвMaterials[].Guidозначает, что идентификатор не заполнен ни у связанной номенклатуры, ни у самого сырья Materials[].CharacteristicGuid— GUID характеристики: вторая часть идентификатора, отделённая пробелом;null, если характеристики нет. Ключ приходит и у сырья со связанной номенклатурой, и у сырья без неёPumpsпередаётся, только если в настройках интеграции включён флаг «Передавать насосы в отгрузках» (режим отправки «по каждой отгрузке, без заказа», по умолчанию выключен). При выключенном флаге ключаPumpsв ответе нет вообще; при включённом, но без насосов у заказа, приходит пустой массив
Статусы отгрузки
Значения поля Status. Общий справочник — используется и в этом отчёте, и в массиве Applications отчёта по заказам, и в заданиях createApplication и createOrder.
| Значение | Название в Цифре | Описание |
|---|---|---|
new | Новая | Плановая отгрузка, загрузка ещё не начиналась |
loading | Загрузка | Идёт загрузка миксера |
delivery | Доставка | Машина в пути на объект |
object | На объекте | Машина прибыла на объект |
pouring | Заливка | Идёт выгрузка бетона |
return | Возвращается | Машина возвращается на завод |
done | Завершена | Отгрузка выполнена |
done
done— единственный конечный статус. Только он означает, что отгрузка состоялась и её данные больше не изменятся- Отгрузку в статусе
newпроводить как реализацию не рекомендуется — она ещё не выполнена - Такая отгрузка может исчезнуть: при отмене, завершении или постановке заказа на паузу все отгрузки этого заказа в статусе
newудаляются в Цифре. Отдельного статуса «отменена» или признака отмены в API нет — отгрузка просто перестаёт приходить в следующих заданиях и отчётах - Пока отгрузка не перешла в
done, её данные могут измениться: объём, машина, водитель, время, состав товаров и услуг
В самих отчётах незавершённые отгрузки не встречаются — действует фильтр Status = done. В промежуточных статусах отгрузки приходят только в заданиях createApplication и createOrder, если в настройках интеграции выбран триггер «При любых изменениях».
- Считать успехом только код
200— отчёт отдаётся с кодом207, и такой обработчик отбросит весь ответ - Разбирать ответ по ключам
successиmessage— у отчётов конверт с заглавной буквы:Success,Message,Data - Считать ключ
Pumpsобязательным — при выключенной настройке его в ответе нет - Искать
IntegrationUnitIdвнутриRecipe,ClientилиProducts— он приходит только на верхнем уровне отгрузки - Ждать от периода фильтрацию по дате отгрузки — фильтр работает по дате создания записи в Цифре
- Разбирать
Materials[].Guidкак GUID — у сырья без связанной номенклатуры 1С приходит его собственный идентификатор (например,ag11), и проверка формата отбросит корректную строку расхода
{
"SecretKey": "2akgzOCYsAxLwpNl",
"StartDate": "2024-12-01 00:00:00",
"EndDate": "2024-12-12 23:59:59"
}
curl -X POST https://1c.cifra.ai/api/application/report \
-H "Content-Type: application/json" \
-d '{
"SecretKey": "2akgzOCYsAxLwpNl",
"StartDate": "2024-12-01 00:00:00",
"EndDate": "2024-12-12 23:59:59"
}'
Ответ приходит с HTTP-кодом 207.
{
"Message": null,
"Success": true,
"Data": [
{
"Id": 12345,
"Doc": "3432",
"Guid": "22db4291-154f-11ec-973e-244bfecb4e0a",
"IntegrationUnitId": 5,
"MixId": 3,
"ShortNumber": "Д10-5",
"Name": "250801Д10-5",
"Total": 12.0,
"TotalClient": 11.8,
"Type": "delivery",
"Status": "done",
"PaymentMethod": "bankWithVAT",
"Date": "2024-12-09 13:00:52",
"StartAt": "2024-12-09 12:41:40",
"ReturnAt": "2024-12-09 13:45:10",
"Recipe": {
"Id": 45,
"Guid": "33ab5192-265b-42fc-a84f-355c9fdc5f1b",
"CharacteristicGuid": "44bc6203-376c-43dd-b95a-466d9ede6e2c",
"Name": "БСТ В12,5П3 F50W2",
"Price": 4500.0
},
"Client": {
"Id": 123,
"Guid": "55cd7314-487d-44ee-c06b-577e1efe7f3d",
"Name": "ООО Заказчик Бетона",
"Inn": "7604377806"
},
"Products": [
{
"Id": 45,
"ServiceId": 892,
"RowNumber": 1,
"Guid": "66de8425-598e-45ff-d17c-688f2fef8a4e",
"CharacteristicGuid": "77ef9536-6a9f-46aa-e28d-799a3afa9b5f",
"Name": "БСТ В12,5П3 F50W2",
"Price": 4500.0,
"Sum": 54000.0,
"Quantity": 12.0,
"VatRate": "20%",
"VatInPrice": true
}
],
"Services": [
{
"Id": 893,
"RowNumber": 2,
"Guid": "88fa0647-7b0a-47bb-f39e-800b4bab0c6a",
"Name": "Доставка бетона",
"Price": 4000.0,
"Sum": 4000.0,
"Quantity": 1.0,
"VatRate": "20%",
"VatInPrice": true
}
],
"Zone": {
"Id": 8,
"Guid": "99ab1758-8c1b-48cc-a40f-911c5cbc1d7b",
"Name": "Зона 1 (до 30 км)"
},
"Delivery": {
"Address": "Тула, Менделеевская улица, 12В",
"Distance": 34.5,
"DistanceToObjectPlan": 32.0,
"OnObjectTime": 40.0,
"Price": 4000.0
},
"Seller": {
"Id": 10,
"Guid": "aabc2869-9d2c-49dd-b510-a22d6dcd2e8c",
"Name": "ООО Бетонный Завод №3",
"Inn": "7123456789"
},
"Carrier": {
"Id": 15,
"Guid": "bbcd397a-ae3d-4aee-c621-b33e7ded3f9d",
"Name": "ИП Перевозчиков",
"Inn": "7198765432"
},
"Car": {
"Id": 89,
"Guid": "ccde4a8b-bf4e-4bff-d732-c44f8efe4a0e",
"CarNumber": "В700ТК797",
"Volume": 8.0,
"Rent": false
},
"Driver": {
"Id": 78,
"Guid": null,
"Name": "Иванов Петр Андреевич"
},
"Manager": {
"Id": 25,
"Name": "Петрова Анна Сергеевна",
"Phone": "+79001234567"
},
"Dispatcher": {
"Id": 31,
"Name": "Сидоров Сергей Сергеевич",
"Phone": "+79007654321"
},
"Spec": {
"Id": 150,
"Guid": "ddef5b9c-c05f-4c00-e843-d5509f0f5b1f",
"CharacteristicGuid": "eeab6cad-d16a-4d11-f954-e6610a1a6c2a",
"Name": "Добавка пластификатор"
},
"Contract": {
"Id": 456,
"Guid": "ffab7dbe-e27b-4e22-a065-f772b12b7d3b",
"Name": "Договор №123/2024 от 01.01.2024"
},
"Invoice": {
"Id": 789,
"Guid": "aabc8ecf-f38c-4f33-b176-a883c23c8e4c",
"Name": "Счет №456 от 05.12.2024"
},
"Materials": [
{
"Id": 16490,
"Guid": "ag11",
"CharacteristicGuid": null,
"Name": "Вода",
"TotalFormula": 1458.0,
"TotalFact": 1451.88
},
{
"Id": 16502,
"Guid": "ccde0a1b-1c2d-4e3f-a405-b6c7d8e9f0a1",
"CharacteristicGuid": null,
"Name": "Цемент ЦЕМ I 42,5Н",
"TotalFormula": 3120.0,
"TotalFact": 3118.4
}
],
"Pumps": [
{
"Id": 142,
"Guid": "bbcd9fda-a49d-4a44-c287-b994d34d9f5d",
"Number": "В123ТК797",
"Rent": false,
"Name": "Насос Putzmeister 36",
"Driver": {
"Id": 314,
"Guid": null,
"Name": "Сидоров Иван Алексеевич",
"Phone": "+79007654321"
}
}
]
}
]
}
Ключ Pumps показан для случая, когда в настройках интеграции включена передача насосов. Без этой настройки ключа в ответе нет. В Materials показаны оба случая: у первой строки связанной номенклатуры 1С нет, поэтому пришёл собственный идентификатор сырья, у второй — GUID связанной номенклатуры.
Коды ответов
| Код | Описание |
|---|---|
| 207 | Отчёт построен. Массив Data может быть пустым |
| 403 | Секретный ключ не найден или отключён |
| 405 | Запрос отправлен не методом POST |
| 422 | Период выборки не указан или дата в неверном формате |
| 500 | Внутренняя ошибка сервиса |
Успех приходит с кодом 207, а не 200: обработчик, который сверяет ответ строго с 200, отбросит корректный отчёт.
Структура ответа
| Поле | Тип | Описание |
|---|---|---|
Message | string|null | Текст ошибки; при успехе — null |
Success | boolean | Признак успешной обработки |
Data | array|null | Массив отгрузок |
- Ключи конверта — с заглавной буквы:
Success,Message,Data. У приёмных методовapi/*, наоборот,successиmessage - В отказе по ключу (
403) поляDataнет вовсе; в ошибках, нормализованных общим обработчиком (405,422,500), приходит"Data": null - Подробности внутренних ошибок наружу не уходят —
Messageв этом случае содержит обезличенный текст
Примеры ответов
{
"Message": null,
"Success": true,
"Data": [
{ "Id": 12345, "Doc": "3432", "MixId": 3, "Status": "done" }
]
}
Элемент массива показан сокращённо — полный состав отгрузки во вкладке Примеры.
{
"Message": null,
"Success": true,
"Data": []
}
Это не ошибка: за период просто нет завершённых отгрузок по заводам ключа.
{
"Message": "Секретный ключ не найден",
"Success": false
}
Тот же ответ приходит, если ключ существует, но отключён. Поля 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
}
Причина фиксируется на стороне Цифры. Если ошибка повторяется, обратитесь в поддержку, указав секретный ключ и период запроса.