File: /var/www/ipsremont-demo/docs/Commands/Пакетная передача данных.md
Для некоторых интеграций с 1С предусмотрена пакетная передача данных.
Это нужно для того чтобы обе стороны договорились о том кто что послал и кто что принял.
Общий процесс работы с пакетами выглядит следующим образом:
- 1С создаёт пакет;
- при изменении данных которые нужно будет импортировать из CRM, 1С в этот пакет складывает объект который нужно передать;
- CRM запрашивает данные;
- CRM отвечает о результатах импорта;
- 1С отвечает о том что получил результаты.
CRM должна ответить одним из ответов:
- всё получено;
- частично получено;
- ничего не удалось получить.
Обмен может происходить с помощью XML или JSON, в разных интеграциях по-разному.
Структура XML ответа из 1С если в пакете нет новых данных:
| Поле | Тип | Описание |
|---------------|-----------|---------------------------|
| NameMethod | `string` | Название метода |
| PackageNumber | `string` | Номер пакета |
| DateOfRequest | `date` | Дата запроса `Y-m-d H: i` |
| NodeId | `integer` | Не используется |
Пример:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<Sales_Receipt_orders>
<NameMethod>SalesReceipt</NameMethod>
<PackageNumber>1</PackageNumber>
<DateOfRequest>2020-01-01 15: 30</DateOfRequest>
<NodeId>112</NodeId>
</Sales_Receipt_orders>
```
Структура JSON ответа из 1С если в пакете нет новых данных:
| Поле | Тип | Описание |
|---------------|-----------|-------------------------------------------------------------|
| NameMethod | `string` | Название метода |
| DateRequest | `date` | Дата запроса `d.m.Y H:i:s` |
| PackageNumber | `integer` | Номер пакета |
| <Данные> | `array` | Массив с данными, название меняется в зависимости от метода |
Пример:
```json
[
{
"NameMethod": "GetDetails",
"DateRequest": "01.01.2020 15:30:00",
"PackageNumber": 1,
"МассивПоДеталям": []
}
]
```
После получения данных из 1С CRM формирует ответ в формате JSON.
Как описывалось выше может быть 3 вида ответа:
Если удалось получить все данные:
```json
[
{
"НомерПакета": 1,
"ИмяМетода": "SalesReceipt",
"Имя Параметра": "All loaded",
"КодУзла": "112"
}
]
```
Если не удалось получить ничего:
```json
[
{
"НомерПакета": 1,
"ИмяМетода": "SalesReceipt",
"Имя Параметра": "Nothing loaded",
"КодУзла": "112"
}
]
```
Если удалось получить не всё, то посылается массив того что не удалось принять (отличается в разных интеграциях):
```json
[
{
"СтатусыВыгрузки": "",
"НомерПакета": 1,
"Код": "ТЕСТ0001",
"Дата": "2020-01-01T15:30",
"ИДУзла": "112",
"ДатаОбмена": "2020-01-01T15:30",
"ОбъектОбмена": "РТУ"
}
]
```
В ответ на это 1С должен ответить о том что он принял наш ответ.
Формат ответа JSON:
```json
{
"SereveAnswers": "success"
}
```