Копировать ссылку на страницу

Назначение:

Функция предназначена для выгрузки данных из внешней системы и преобразования данных в формат системы DIRECTUM.

Входные параметры:

IntegratedSystemCode – строка, код интегрированной системы из справочника Интегрированные системы;
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..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

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

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

© 2016 Компания DIRECTUM Сообщество пользователей DIRECTUM