Skip to content

Commit

Permalink
Добавлены примеры заполнения настроек для FTP-сервера и HTTP-сервиса.…
Browse files Browse the repository at this point in the history
… Добавлен пример записи истории интеграции
  • Loading branch information
thvvmas committed Oct 8, 2024
1 parent f811bda commit a4e1396
Showing 1 changed file with 75 additions and 7 deletions.
82 changes: 75 additions & 7 deletions docs/УправлениеИнтеграциями.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@

Для создания настроек интеграции необходимо создать предопределенные элементы справочников **пбп_ИнтегрируемыеСистемы**, **пбп_НастройкиИнтеграции**, **пбп_ИнтеграционныеПотоки** с помощью подсистемы предопределенных значений (см. [Предопределенные значения](docs/ПредопределенныеЗначения.md)). Рассмотрим заполнение данных на нескольких примерах:

### Заполнение настроек для обмена через FTP-Сервер
Для этого заходим в общий модуль "пбп_ПредопределенныеЗначенияПереопределяемый" и добавляем следующий код:
#### Заполнение настроек для обмена через FTP-Сервер
Заходим в общий модуль "пбп_ПредопределенныеЗначенияПереопределяемый" и добавляем следующий код:
1. В функции ПредопределенныеЗначенияИнтегрируемыеСистемы, необходимо добавить интегрируемую систему, с которой будет происходить взаимодействие

```1C (BSL)
Expand All @@ -76,7 +76,7 @@
КонецФункции
```

2. В функции ПредопределенныеЗначенияНастройкиИнтеграции, необходимо добавить настройки интеграции, по которым выполняется подключение к ранее добавленной системе, с обязательным указанием ссылки на интегрируемую систему
2. В функции ПредопределенныеЗначенияНастройкиИнтеграции, необходимо добавить настройки интеграции, по которым выполняется подключение к ранее добавленной системе, с указанием ссылки на интегрируемую систему

```1C (BSL)
Функция ПредопределенныеЗначенияИнтегрируемыеСистемы() Экспорт
Expand Down Expand Up @@ -121,14 +121,21 @@
```

Для вышеуказанных справочников обязательных к заполнению реквизитами являются только "Наименование" и "ИдентификаторНастройки". Остальные реквизиты можно заполнить в пользовательском режиме.

Реквизит "ИдентификаторНастройки" в каждом вышеуказанном справочнике является аналогом платформенного "ИмяПредопределенныхДанных" и должен быть ***уникальным в рамках одного справочника***!


После описания предопределенных значений в коде и обновления конфигурации, необходимо зайти в пользовательский режим и нажать на кнопку "Заполнить предопределенные" в формах списков справочников с указанной последовательностью: Интегрируемые системы, Настройки интеграции, Интеграционные потоки.

В элементе "Подключение к ftp-серверу" справочника настройки интеграции заполнить адрес/имя сервера подключения без указания протокола (например, 127.0.0.1) и порт (по-умолчанию 21 для ftp и 22 для sftp). Ниже в табличной части нажать на кнопку "Параметры аутентификации" и заполнить появившиеся строки с логином и паролем от ftp-сервера. ***При записи справочника они будут помещены в безопасное хранилище***.

В элементе "Отправка файлов на ftp-сервер" справочника интеграционных потоков необходимо указать путь к каталогу исходящих файлов на ftp-сервере. Например, /test/out.

В элементе "Получение файлов с ftp-сервера" справочника интеграционных потоков необходимо указать путь к каталогу входящих файлов на ftp-сервере. Например, /test/in.

### Заполнение настроек для обмена через HTTP-сервис (только входящий поток).
#### Заполнение настроек для обмена через HTTP-сервис (только входящий поток).

Допустим, мы должны сделать интеграцию с системой N через шину данных с использованием REST API.

1. Интегрируемая система

Expand Down Expand Up @@ -189,20 +196,81 @@
```

После описания предопределенных значений в коде и обновления конфигурации, необходимо зайти в пользовательский режим и нажать на кнопку "Заполнить предопределенные" в формах списков справочников с указанной последовательностью: Интегрируемые системы, Настройки интеграции, Интеграционные потоки.

В элементе "Подключение к шине данных" справочника настройки интеграции заполнить адрес/имя сервера, где находится шина данных с указанием протокола (например, http://192.100.0.1) и порт (например, 8080). Ниже в табличной части нажать на кнопку "Параметры аутентификации" и заполнить появившиеся строки с логином и паролем или JWT-токеном (bearer-токен), в зависимости от выбранного типа авторизации, от http-сервиса. ***При записи справочника они будут помещены в безопасное хранилище***.

В элементе "Получение товаров на складах из системы N" справочника интеграционных потоков необходимо заполнить:
1. Ресурс, к которому будет происходить вызов. Например, /test/goods-in-warehouses (обороты по товарам на складах);
2. В таблице параметров запроса указать параметры, если они есть. Например, для текущего метода есть параметры запроса "from" (дата начала) и "to" (дата окончания):

№ | Имя | Тип | Параметр URL | ЗначениеПоУмолчанию | Поле объекта
--|-----|-----|--------------|---------------------|--------------
1 |from |Дата | [ ] |01.01.2024 |
2 |to |Дата | [ ] |31.12.2024 |
1 |from |Дата |Ложь |01.01.2024 |
2 |to |Дата |Ложь |31.12.2024 |

#### Заполнение настроек для обмена через прямое подключение к БД



#### Заполнение настроек для внешней компоненты



### Обмен данными между системами на базе 1С
#### Заполнение настроек для командной строки



#### Обмен данными между системами на базе 1С

Для обмена данными между системами на базе 1С, посредством встроенных в БСП средств (правила обмена на базе 1С: Конвертации данных 2.0, правила обмена на базе 1С: Конвертации данных 3.0), необходимо создать только интеграционный поток, с наименованием, совпадающем с наименованием плана обмена (например, "Обмен с ЗУП 3.1"). Это необходимо для того, чтобы встроить типовой механизм обмена в механизм логирования подсистемы истории интеграции, посредством заполнения справочника истории интеграции.

## Реализованные методы

Рассмотрим программный интерфейс подсистемы управления интеграциями, выполненный в общем модуле **пбп_ИнтеграцииСервер**:

1. Для того, чтобы создать запись в истории интеграции в коде, где происходит вызов, необходимо инициализировать структуру записи с помощью функции **ПолучитьСтруктуруЗаписиИстории** и сохранить ее в данные справочника после пост-обработки данных (для подсчета общего времени обмена) с помощью процедуры **СоздатьСообщениеИсторииИнтеграции**:

**Пример записи истории интеграции:**

```1C (BSL)
Процедура Тест(Знач Сессия)
ИнтеграционныйПоток = Справочники.пбп_ИнтеграционныеПотоки.НайтиПоРеквизиту(
"ИдентификаторНастройки", "ПолучениеТоваровНаСкладахИзСистемыN");
РеквизитыПотока = пбп_ОбщегоНазначенияСервер.ЗначенияРеквизитовОбъекта(ИнтеграционныйПоток,
"ТочкаВхода, НастройкаИнтеграции, НастройкаИнтеграции.ИнтегрируемаяСистема");
СтруктураОтвета = пбп_ИнтеграцииСервер.ПолучитьСтруктуруЗаписиИстории();
СтруктураОтвета.ИнтеграционныйПоток = ИнтеграционныйПоток;
СтруктураОтвета.ФорматИнтеграции = Перечисления.пбп_ФорматыИнтеграций.JSON;
СтруктураОтвета.ИнтегрируемаяСистема = РеквизитыПотока.НастройкаИнтеграцииИнтегрируемаяСистема;
Попытка
URL = "https://127.0.0.1:8080/test/goods-in-warehouses";
ВремяНачалаВызова = ТекущаяДатаСеанса();
ОтветHTTP = КоннекторHTTP.Get(URL, , , Сессия);
СтруктураОтвета.ДлительностьВызова = ТекущаяДатаСеанса() - ВремяНачалаВызова;
СтруктураОтвета.ЗапросВходящий = КоннекторHTTP.КакТекст(ОтветHTTP);
Если ОтветHTTP.КодСостояния < 300 Тогда
// ...
Иначе
ТекстСообщения = СтрШаблон("ru = 'Код состояния %1: %2'", ОтветHTTP.КодСостояния,
пбп_ИнтеграцииСервер.РасшифровкаКодаСостоянияHTTP(ОтветHTTP.КодСостояния));
СтруктураОтвета.ОписаниеОшибки = НСтр(ТекстСообщения);
КонецЕсли;
Исключение
ТекстСообщения = "ru = 'Ошибка при получении компонентов из JIRA'";
СтруктураОтвета.ОписаниеОшибки = пбп_ОбщегоНазначенияСервер.ПолучениеПолногоТекстаОшибкиПриИсключении(
НСтр(ТекстСообщения), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), ПолучитьСообщенияПользователю(Истина));
КонецПопытки;
пбп_ИнтеграцииСервер.СоздатьСообщениеИсторииИнтеграции(СтруктураОтвета, Истина);
КонецПроцедуры
```

0 comments on commit a4e1396

Please sign in to comment.