Настройка выгрузки из КХД Datareon Platform во внешнюю систему PоstgreSQL

В Экстракторе 1С реализована интеграция с Datareon Platform в формате нового подключения. В данном разделе описан пример работы с Datareon Platform.

Для выгрузки данных из КХД (банка данных) 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 началась, данные поступают: