Копировать ссылку на страницу Перейти в предыдущий раздел Перейти в следующий раздел

Назначение:

Выгружает данные из внешней системы и конвертирует данные в формат системы 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
.navbar > a:hover { background: #FFD73B; }