Модификация прикладной системы
Разработка коннекторов к внешним системам
…ExportDataFromIntegratedSystem
Назначение:
Выполнение выгрузки данных из внешней системы и преобразовании данных в формат системы DIRECTUM.
Входные параметры:
IntegratedSystemCode – строка, код интегрированной системы из справочника Интегрированные системы.
ExportMode – строка, режим экспорта данных из системы, возможные значение – «Batch», «Online».
HiddenMode – логический, cкрытый режим.
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..6);
· <Номер записи в детальном разделе> - номер записи детального раздела.
Шаблон текста функции (один из возможных вариантов реализации с преобразованием):
/******************************************************************************/
// Получить имя файла, из которого будут приниматься данные //
/******************************************************************************/
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()
// Получить XSL преобразование для импорта
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
где
· <Имя файла с данными> - имя файла, в который выгружаются данные из внешней системы;
· <Код выгрузки данных из внешней системы в файл> - код, предназначенный для выгрузки данных из внешней системы в файл.
См. также:
· …GetDataExchangeSettingRequiredParamList;
· …ImportDataToIntegratedSystem;
· …FindObject;
· …GetInfo;
© 2009, Компания DIRECTUM
|
Отправить комментарий к этому разделу на
support@directum.ru
|