HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
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"
}
```