Назначение:
Выгружает данные из внешней системы и конвертирует данные в формат системы DIRECTUM.
Входные параметры:
• | IntegratedSystemCode – строка, код интегрированной системы из справочника Интегрированные системы; |
• | ExchangeSettingsCode – строка, код настройки обмена из справочника Настройки обмена данными с интегрированными системами; |
• | ExportMode – строка, режим выгрузки данных из системы. Возможные значения: Batch, Online; |
• | HiddenMode – логический, скрытый режим; |
• | ObjectInfo – строка, информация о выгружаемом объекте системы (в online-режиме). |
Возвращаемое значение:
Ссылка на объект типа «MSXML.DOMDocument», в котором содержатся данные, выгруженные из внешней системы и преобразованные к формату DIRECTUM.
Схема процесса:
Описание:
Функция используется для выполнения выгрузки данных из внешней системы и преобразования их к формату DIRECTUM. Функция может быть реализована разными способами, т.к. каждая внешняя система предоставляет собственные возможности интеграции. Например, данные могут сразу формироваться в формате системы DIRECTUM, минуя этап преобразования.
Формат XML-документа, возвращаемого функцией:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<DataExchangePackage>
<Object Type="Reference" Name="<Имя справочника>">
<Record ID="<ИД записи справочника>" Action="<Действие>">
<Section Index="0">
<Requisite Name="<Имя реквизита типа справочник>" Type="Reference"
ReferenceName="<Имя справочника>"><ИД записи справочника></Requisite>
<Requisite Name="<Имя реквизита>" Type="<Тип реквизита>">
<Значение реквизита></Requisite>
...
</Section>
<Section Index="<Номер раздела>">
<Record ID="<Номер записи в детальном разделе>"
Action="<Действие>">
<Section Index="0">
<Requisite Name="<Имя реквизита типа справочник детального раздела>"
Type="Reference" ReferenceName="<Имя справочника>">
<ИД записи справочника></Requisite>
<Requisite Name="<Имя реквизита детального раздела>"
Type="<Тип реквизита>"><Значение реквизита></Requisite>
...
</Section>
</Record>
...
</Section>
...
</Record>
...
</Object>
...
</DataExchangePackage>
<Имя справочника>. Имя справочника системы DIRECTUM.
<ИД записи справочника>. ИД записи справочника системы DIRECTUM.
<Действие>. Действие над записью справочника. Возможные значения: Change, Delete.
<Имя реквизита типа справочник>. Имя реквизита справочника DIRECTUM типа «Справочник».
<Имя реквизита>. Имя реквизита справочника DIRECTUM, кроме реквизитов типа «Справочник».
<Тип реквизита>. Тип реквизита справочника DIRECTUM. Возможные значения: String, Double, Integer, Date, Reference, Text, Pick, Unknown.
<Значение реквизита>. Значение реквизита.
<Номер раздела>. Номер табличного раздела. Возможные значения: 1..24.
<Номер записи в детальном разделе>. Номер записи детального раздела.
Шаблон текста функции (один из возможных вариантов реализации с преобразованием):
// Получить имя файла, из которого будут приниматься данные.
FullFileName = <Имя файла с данными>
//Выгрузка данных из внешней системы.
<Код выгрузки данных из внешней системы в файл>
// Преобразовать XML-документ к формату DIRECTUM.
Source = CreateObject("MSXML.DOMDocument")
Source.load(FullFileName)
XSLStylesheet = CreateObject("MSXML.DOMDocument")
Result = CreateObject("MSXML.DOMDocument")
// Отфильтровать справочник с настройками по данной системе
// и по типу настройки.
// Объявить константы.
SOURCE_SYSTEM_TYPE_CODE = "S"
REQUISITES_SETTINGS_DETAIL_DATASET_INDEX = 1
IntegrationSettingsReference =
References.IntegratedSystemsDataExchangeSettings.GetComponent()
IntegratedSystemID = References.IntegratedSystems.GetObjectByCode(
IntegratedSystemCode).SYSREQ_ID
AddWhere = Format("%0:s.%1:s = %2:s and %0:s.%3:s = '%4:s'";
ArrayOf(IntegrationSettingsReference.TableName;
IntegrationSettingsReference.Requisites("IntegratedSystem").SQLFieldName;
IntegratedSystemID;
IntegrationSettingsReference.Requisites("IntegratedSystemType").SQLFieldName;
SOURCE_SYSTEM_TYPE_CODE))
AddWhereID = IntegrationSettingsReference.AddWhere(AddWhere)
IntegrationSettingsReference.Open()
ReceivedMessageNo = 0
// Показать прогресс бар
if not HiddenMode
Progress = CreateProgress(; IntegrationSettingsReference.RecordCount)
Progress.Show()
endif
// Преобразовать данные.
foreach IntegrationSetting in IntegrationSettingsReference
IntegrationSetting.OpenRecord()
// Получить текст преобразования для импорта.
XSLStylesheet.loadXML(IntegrationSetting.Requisites("Текст").AsString)
Result = TransformXMLToDirectumFormat(Source; Result; XSLStylesheet)
if not HiddenMode
Progress.Next()
endif
endforeach
IntegrationSettingsReference.Close()
IntegrationSettingsReference.DelWhere(AddWhereID)
if not HiddenMode
Progress.Hide()
endif
<Имя файла с данными>. Имя файла, в который выгружаются данные из внешней системы.
<Код выгрузки данных из внешней системы в файл>. Код, предназначенный для выгрузки данных из внешней системы в файл.
Примечание
Описание функции актуально для коннекторов, которые используют стандартный механизм загрузки/выгрузки данных с применением XSL-преобразования. Если в компании разработан собственный коннектор, то текст функции может быть произвольным. Возможность использования стандартного механизма задается в параметре функции ...GetInfo.
© Компания DIRECTUM, 2018 | Сообщество пользователей DIRECTUM |