Создание договоров
Метод для создания или обновления договоров с условиями (товары и услуги) в Цифре из 1С.
Запрос
POST /api/contract/create
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
SecretKey |
string | Да | Секретный ключ |
Data |
array | Да |
Массив договоров
Структура Data[] |
Структура Data[]
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
Guid |
string | Да | Идентификатор договора в 1C |
CompanyGuid |
string | Да | Идентификатор контрагента в 1С |
Name |
string | Нет | Название договора |
Date |
datetime | Нет | Дата договора |
Conditions |
array | Нет | Условия договора (товары и услуги)
Структура Conditions[] |
Структура Conditions[]
Важно: Массив
Conditions может содержать три типа элементов:
- Товары — когда
Serviceпустой, null или отсутствует - Услуги — когда указан
Service - Зоны доставки — когда
Zone = true
Товары (когда Service пустой, null или отсутствует)
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
Guid |
string | Да | Идентификатор товара в 1C |
Name |
string | Да | Наименование товара |
| Остальные поля (Price, VatRate, Unit, Sku, Characteristics и др.) см. в документации по продукции | |||
Услуги (когда Service указан)
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
Guid |
string | Да | Идентификатор услуги в 1C |
Name |
string | Да | Наименование услуги |
Service |
string | Да | Тип услуги: mix (доставка), downtime (простой), pump (насос), other (прочее) |
Price |
float | Нет | Цена услуги (по умолчанию 0) |
VatRate |
float | Нет | Процент НДС (по умолчанию 0) |
VatInPrice |
boolean | Нет | Включен ли НДС в цену (по умолчанию false) |
PriceType |
string | Нет | Тип цены (по умолчанию "by_one")
Подробнее о типах цен |
Зоны доставки (когда Zone = true)
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
Zone |
boolean | Да | Должно быть true для обозначения зоны доставки |
Guid |
string | Да | Идентификатор зоны в 1C |
Name |
string | Да | Название зоны доставки |
| Остальные поля см. в документации по зонам доставки | |||
Типы цен (PriceType)
Допустимые значения PriceType зависят от типа услуги:
| Тип услуги (Service) | Допустимые значения PriceType | Описание |
|---|---|---|
mix |
by_one, by_all |
За 1 м³ или за рейс |
pump |
by_one, by_all |
За единицу или за все единоразово |
downtime |
free, by_one |
Бесплатно или за час |
other |
by_one, by_all |
За единицу или за все единоразово |
Пример запроса
{
"SecretKey": "2akgzOCYsAxLwpNl",
"Data": [
{
"Guid": "22db4291-154f-11ec-973e-244bfecb4e0a",
"CompanyGuid": "33ab5192-265g-22fc-a84f-355cgfdc5f1b",
"Name": "Договор поставки №43",
"Date": "2024-04-03 00:00:00",
"Conditions": [
{
"Guid": "44cd6203-376h-33gd-b95g-466dghde6g2c",
"Name": "БСТ М400",
"Sku": "БСГ-М400",
"Unit": "м³",
"Price": 5000,
"Total": 10,
"Vat": 20,
"VatInPrice": true,
"Characteristics": [
{
"Guid": "char-001-aaa",
"Name": "F200"
},
{
"Guid": "char-002-bbb",
"Name": "W6"
}
]
},
{
"Guid": "66ef8425-598j-55if-d17i-688fijgf8i4e",
"Name": "Щебень фр. 5-20",
"Price": 1500,
"Total": 5,
"VatRate": 0,
"VatInPrice": false
},
{
"Guid": "55de7314-487i-44he-c06h-577ehife7h3d",
"Name": "Доставка",
"Price": 50,
"VatRate": 20,
"VatInPrice": true,
"Service": "mix"
},
{
"Zone": true,
"Guid": "zone-77fg9536-609k-66jg-e28j-799gjkhg9j5f",
"Name": "Зона А - Центральный район",
"Price": 100
}
]
}
]
}
Ответ
Коды ответов
| Код | Описание |
|---|---|
201 |
Успешное создание. Все договоры обработаны без ошибок (success: true) |
200 |
Частичный успех. Часть данных обработана, но есть ошибки валидации (success: true) |
400 |
Неверный тип данных. Data должен быть массивом (success: false) |
403 |
Секретный ключ не найден (success: false) |
500 |
Ошибка сервера. Внутренняя ошибка обработки (success: false) |
Успешный ответ (201)
{
"success": true,
"message": "Добавлено документов: 1, товаров: 3, сервисов: 2, зон: 1",
"data_id": 123
}
Ответ с ошибками (200)
{
"success": true,
"message": "Добавлено документов: 1, товаров: 1, сервисов: 1, зон: 0. Ошибок GUID документов: 1. Ошибок CompanyGuid: 1. Товаров без GUID: 2. Товаров без названия: 1. Услуг без GUID: 1. Услуг без названия: 1. Услуг без типа: 2. Услуг с неверным типом цены: 1. Тарифов зон без типа услуги: 1. Тарифов зон с неверным типом цены: 1",
"data_id": 123
}
Ошибка валидации данных (400)
{
"success": false,
"message": "Неверный тип данных",
"data_id": 123
}
Ошибка авторизации (403)
{
"success": false,
"message": "Секретный ключ не найден",
"data_id": null
}
Ошибка сервера (500)
{
"success": false,
"message": "Произошла ошибка: подробное описание ошибки",
"data_id": 123
}
Примечания
- Обязательные поля договора:
Guid,CompanyGuid - Обязательные поля товара:
Guid,Name - Обязательные поля услуги:
Guid,Name,Service(тип услуги) - Валидация услуг: Поле
PriceTypeдолжно соответствовать типу услуги. Допустимые значения:- Для
mix,pump,other:by_one(за единицу) илиby_all(за всё) - Для
downtime:free(бесплатно) илиby_one(за час)
- Для
- Обязательные поля зоны доставки:
Zone = true,Guid,Name - Обязательные поля тарифов в зонах:
Guid,Name,Service(тип услуги). ВалидацияPriceTypeаналогична услугам - Типы условий: Массив
Conditionsможет содержать товары, услуги и зоны доставки одновременно - Определение типа элемента:
- Если
Zone = true— обрабатывается как зона доставки - Если
Serviceпустой/null/отсутствует — обрабатывается как товар - Если
Serviceуказан — обрабатывается как услуга
- Если
- Характеристики товаров:
- Для товаров с характеристиками создается отдельная связь документа с товаром для каждой характеристики
- Характеристики без поля
Guidпропускаются - Если характеристик нет — создается одна связь с простым GUID товара
- Компания с указанным
CompanyGuidдолжна существовать в Цифре - Товары/услуги/зоны без обязательных полей пропускаются и не создаются
- Поля
MinиMaxдля услуг в договорах НЕ используются (только для зон доставки) - Не отправляйте за раз более 2000 договоров или более 1 МБ данных