Настройка выгрузки из КХД Datareon Platform во внешнюю систему PоstgreSQL
Для выгрузки данных из КХД (банка данных) Datareon Platform во внешнюю систему PоstgreSQL необходимо создать подключение к внешней системе PоstgreSQL в Datareon Platform. Переходим в раздел «Интеграция», затем — «Внешние системы» и указываем основные данные подключения.

Во вкладке «Коннектор» укажем параметры подключения, а затем сохраним (
) и применим конфигурацию (
).

Также нам понадобится тип данных «DT_VyruchkaISebestoimostProdazh_out». Переходим в раздел «Типы данных» и создаем его.

Теперь переходим во вкладку «Структура», нажимаем «+» и создаем 4 поля, затем настраиваем их— задаем им название и тип (данные поля понадобятся нам в далее на этапе маппинга полей):
Registrator с типом String[Max];
Period с типом DateTime;
Kolichestvo с типом Decimal [15, 3];
Stoimost с типом Decimal [15, 2].

Также нам потребуется дополнительное поле в типе данных «DT_VyruchkaISebestoimostProdazh», который мы создали в предыдущей статье. Для этого переходим в него, затем во вкладку «Структура» и нажимаем «+», в структуру добавилось поле с названием по умолчанию «поле1», находим его с помощью поиска и переименовываем в «Uploaded», в качестве типа данных устанавливаем простой тип «Boolean». «Uploaded» —это признак того, что эта строка загружена во внешнюю систему PGSQL из КХД Datareon Platform.

Снова сохраним (
) и применим конфигурацию (
).
Теперь создадим бизнес-процесс. Для этого вернемся в «Центр настройки», перейдем в раздел «Обработка данных», затем «Схемы обработки» и нажмем кнопку «
».
Во вкладке «Основные» задаем имя бизнес-процессу.

Затем переходим во вкладку «Переменные» и добавляем в табличную часть переменные, которые понадобятся нам в этом бизнес-процессе.

переменная «DT_VyruchkaISebestoimostProdazh» с типом тип данных, который мы создали в предыдущей статье, также устанавливаем флаг «Массив» (т.к., мы будем вычитывать данные из КХД массивом) и нажимаем «Выбрать».

переменная «DT_VyruchkaISebestoimostProdazh_out» с внешним типом данных «DT_VyruchkaISebestoimostProdazh_out». С ее помощь мы запишем вычитанные предыдущей переменной данные в PGSQL построчно.


переменная «i» с типом «Int» (простые типы) и значением «0» — это счетчик строк, переданных через процесс, из вычитанного КХД-массива.

И сохраняем созданный процесс с помощью кнопки
в правом верхнем углу интерфейса.
Соберем схему процесса. Для этого перейдем во вкладку «Схема» и добавим шаги:
Запрос объектов;
Условие;
Установка переменных;
Отправка;
Алгоритм;
Запрос.

Теперь настроим параметры для каждого из шагов.
Добавим шаг «Запрос объектов» и укажем для него тип данных, который мы будем выгружать из КХД (банка данных) Datareon Platform.


Составим сам запрос, с помощью которого получим все строки из КХД, которые еще не были загружены во внешнюю систему PGSQL:
Select DT_VyruchkaISebestoimostProdazh.Object from DT_VyruchkaISebestoimostProdazh as DT_VyruchkaISebestoimostProdazh where DT_VyruchkaISebestoimostProdazh.Uploaded = 0

Затем прейдем во вкладку «Результат выполнения» и, чтобы сохранить результат выполнения в переменную, перетянем «Результаты» на тип данных «DT_VyruchkaISebestoimostProdazh».

Добавим шаги «Условие» и «Установка переменных», затем соединим их и нажмем на связь между ними. В качестве условия установим:
i < DT_VyruchkaISebestoimostProdazh.Count
То есть, пока счетчик выгруженных в PGSQL строк не достиг числа записей массива, вычитанного из КХД, сценарий будет выполнятся.

Затем установим переменные в соответствующем шаге. Данный шаг необходим для обновления данных, здесь мы выполним маппинг (сопоставление) полей.

Теперь для каждого сопоставления укажем выражение формата Convert.To в открывшемся по нажатию
окне, соответственно получится:
для полей «Period» выражение
Convert.ToDateTime(DT_VyruchkaISebestoimostProdazh[i].Period);для полей «Registrator» выражение
Convert.ToString(DT_VyruchkaISebestoimostProdazh[i].Registrator);для полей «Stoimost» выражение
Convert.ToDecimal(DT_VyruchkaISebestoimostProdazh[i].Stoimost);для полей «Kolichestvo» выражение
Convert.ToDecimal(DT_VyruchkaISebestoimostProdazh[i].Kolichestvo).

Настроим отправку во внешнюю систему. Отправлять во внешнюю систему будем данные с типом «DT_VyruchkaISebestoimostProdazh_out», который создан и привязан ко внешней системе PGSQL. Для этого добавим шаг «Отправка» и переходим в настройки в поле «Сообщение» выбираем переменную, соответствующую типу внешней системы, то есть «DT_VyruchkaISebestoimostProdazh_out».

Теперь необходимо создать обработчик на вставку во внешнюю систему PostgreSQL, где с помощью кода обработчика мы опишем, как именно будут записываться данные этого типа. Переходим в раздел «Обработчики» и создаем обработчик с типом «Обработчик PostgreSQL».

Предварительно необходимо создать таблицу с полями, указанными при маппинге полей, в которую будут выгружаться данные. Для этого откройте консоль работы с Вашим SQL-приложением и создайте таблицу в базе данных с помощью следующего запроса:
create table DT_VyruchkaISebestoimostProdazh_out ( Period Date, Registrator Varchar, Kolichestvo Decimal(15,3), Stoimost Decimal(15,2) )
Чтобы написать код для данного обработчика перейдем во вкладку «Код» и укажем:
Insert into public."dt_vyruchkaisebestoimostprodazh_out" ("period", "registrator", "kolichestvo", "stoimost") values (@Period, @Registrator, @Kolichestvo, @Stoimost)
Здесь поля типа данных «DT_VyruchkaISebestoimostProdazh_out» подставлены в запрос с помощью префикса «@».

Теперь перейдем во вкладку «Из Platform» и добавим переменную с типом данных «DT_VyruchkaISebestoimostProdazh_out».


Перейдем во вкладку «Системы» и выберем систему обработчика «PGSQL».

Сохраним схему (
) и применим конфигурацию (
).
Вернемся в схему бизнес-процесса и добавим наш обработчик для шага «Отправка», затем в поле «Получатель» укажем «PGSQL», а в поле «Ожидание» — «Ожидание доставки» и время ожидания 60000 (мс).

Теперь добавим шаг «Запрос». Для него устанавливаем тип данных «DT_VyruchkaISebestoimostProdazh» и указываем запрос, с помощью которого все отправленные во внешнюю систему PGSQL строки будут помечены в КХД Datareon Platform как выгруженные:
Update DT_VyruchkaISebestoimostProdazh set Uploaded = 1 from DT_VyruchkaISebestoimostProdazh where DT_VyruchkaISebestoimostProdazh.Uploaded = 0

Затем добавим шаг «Алгоритм», который будет увеличивать счетчик строк на 1:
i++;

В итоге у нас получилась следующая схема.

Сохраним ее.
Теперь настроим расписание. Для этого переходим в раздел «Обработка данных», затем выбираем «Задания по расписанию» и настраиваем его:
указываем название;
устанавливаем флаг «Включено»;
указываем само расписание (рекомендуется устанавливать каждые 30 минут или каждый час).

Перейдем во вкладку «Схемы обработки», в системных алгоритмах выбираем «Выгрузка из КХД во внешнюю PGSQL» и добавляем его в поле «Выбранные схемы обработки».

Теперь сохраним схему (
) и применим конфигурацию (
).
Перейдем в базу данных. Выгрузка данных из КХД Datareon Platform во внешнюю систему PоstgreSQL началась, данные поступают:
