Справочники — Зоны доставки
Метод для создания или обновления зон доставки с тарифами услуг в Цифре из 1С.
Для создания или обновления зон доставки в Цифре необходимо отправить запрос на метод API, передав массив зон в поле Data.
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
SecretKey |
string | Да | Секретный ключ |
Data |
array | Да | Массив зон доставки для создания/обновления |
Логика работы
- Данные передаются в массиве
Data - Если зона с переданным
Guidуже существует в системе — она будет обновлена - Если зоны с таким
Guidнет — будет создана новая
Структура Data[]
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
Guid |
string | Да | Идентификатор зоны доставки в 1C |
Name |
string | Да | Название зоны доставки |
Items
|
Нет | Массив тарифов/услуг в зоне |
Типы цен (PriceType)
Допустимые значения PriceType зависят от типа услуги.
| Тип услуги (Service) | Допустимые значения PriceType | Описание |
|---|---|---|
mix | by_one, by_all | За 1 м³ или за рейс |
pump | by_one, by_all | За единицу или за все единоразово |
downtime | free, by_one | Бесплатно или за час |
other | by_one, by_all | За единицу или за все единоразово |
Примечания
- Обязательные поля зоны:
Guid,Name - Обязательные поля тарифа:
Guid,Name,Service - Если
PriceTypeне указан, используется значение по умолчаниюby_one - Для
Factoriesобязательны поляId,Price,VatRate/Vat,VatInPrice - Если массив
Factoriesуказан, система создаёт специфичные цены для каждого объекта: для объектов из массива — указанную цену, для остальных — базовую - Если тариф был создан ранее, система обновляет только основные параметры
- Зоны доставки также могут быть переданы в
Conditionsдоговора с флагомZone = true - Не отправляйте за раз более 2000 зон или более 1 МБ данных
Пример запроса
1С → Цифра
{
"SecretKey": "2akgzOCYsAxLwpNl",
"Data": [
{
"Guid": "zone-guid-1",
"Name": "Зона А - Центр",
"Items": [
{
"Guid": "tariff-guid-1",
"Name": "Доставка миксером",
"Service": "mix",
"Price": 2000,
"VatRate": 20,
"VatInPrice": false,
"PriceType": "by_one",
"Min": 5,
"Max": 10,
"Factories": [
{
"Id": 1,
"Price": 1800,
"VatRate": 20,
"VatInPrice": false
},
{
"Id": 2,
"Price": 2200,
"VatRate": 20,
"VatInPrice": false
}
]
},
{
"Guid": "tariff-guid-2",
"Name": "Насос 32м",
"Service": "pump",
"Price": 15000,
"VatRate": 20,
"VatInPrice": true,
"PriceType": "by_all"
}
]
}
]
}
Коды ответов
| Код | Описание |
|---|---|
| 201 | Успешное создание. Все зоны и тарифы обработаны без ошибок (success: true) |
| 207 | Частичный успех. Часть данных обработана, но есть ошибки (success: true) |
| 401 | Ошибка ключа. Секретный ключ не найден (success: false) |
| 422 | Ошибка валидации. Data должен быть массивом (success: false) |
| 500 | Ошибка сервера. Внутренняя ошибка обработки (success: false) |
Структура ответа
| Поле | Тип | Описание |
|---|---|---|
success | boolean | Успешность операции |
message | string | Сообщение об успешных операциях |
data_id | integer | ID записи в логе |
errors | array | Массив ошибок (только при наличии ошибок) |
Примеры ответов
{
"success": true,
"message": "Создано зон: 1. Связано тарифов: 2",
"data_id": 123
}
{
"success": true,
"message": "Создано зон: 1. Связано тарифов: 1",
"data_id": 123,
"errors": [
"Зон без GUID: 1",
"Тарифов без типа услуги: 2",
"Объектов без НДС: 1"
]
}
{
"success": false,
"message": "Секретный ключ не найден",
"data_id": null
}
{
"success": false,
"message": "Неверный тип данных",
"data_id": 123
}
{
"success": false,
"message": "Произошла ошибка: подробное описание ошибки",
"data_id": 123
}