Модификация прикладной системы

 

Разработка коннекторов к внешним системам

 

…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        

где

·         <Имя файла с данными> - имя файла, в который выгружаются данные из внешней системы;

·         <Код выгрузки данных из внешней системы в файл> - код, предназначенный для выгрузки данных из внешней системы в файл.

 

 

См. также:

·         …GetSystemType;

·         …GetRequiredParamList;

·         …GetDataExchangeSettingRequiredParamList;

·         …GetReferenceList;

·         …GetSectionList;

·         …GetRequisiteList;

·         …GenereteExportXSLText;

·         …GenereteImportXSLText;

·         …ImportDataToIntegratedSystem;

·         …ShowObjectForm;

·         …FindObject;

·         …GetObjectTypeList;

·         …GetInfo;

·         …GetEditCalculationText.