Настройка экспорта и импорта#
Раздел описывает настройку обмена данными по XML-схемам: регистрацию объектов для экспорта, формирование исходящих XML-файлов, разбор входящих XML-файлов, загрузку прикрепленных файлов и отдельные нестандартные сценарии импорта. Перед настройкой экспорта и импорта должны быть созданы внешняя система, метасхемы и канал информационного обмена.
Настройка экспорта#
Экспорт используется для передачи данных из Global ERP во внешнюю систему. Экспорт настраивается через канал информационного обмена, бизнес-объекты канала, правила подписания измененных объектов и XML-схемы выгрузки. В результате настройки система определяет, какие объекты нужно отобрать, в каком порядке их обработать и какую XML-структуру сформировать для внешней системы.
Регистрация изменившихся объектов#
Автоматическая регистрация изменившихся объектов настраивается на вкладке Бизнес-объекты в карточке канала информационного обмена. Эта настройка определяет, какие объекты должны попадать в экспорт при изменении данных, и позволяет ограничить выгрузку только значимыми для внешней системы изменениями.
Для настройки регистрации изменившихся объектов:
На вкладке Бизнес-объекты в столбце Класс-шапка бизнес-объекта укажите классы бизнес-объектов, по которым нужно отслеживать изменения.
В столбце Условие фильтрации задайте SQL-условие, которое ограничивает записи для экспорта в рамках канала. Условие добавляется после оператора
WHERE.Если выгружается несколько бизнес-объектов, в столбце Очередность экспорта укажите порядок обработки. Объект с меньшим номером выгружается раньше.
На вкладке Состав добавьте классы, входящие в бизнес-объект: основной класс и необходимые коллекции.
На вкладке Атрибуты отметьте в столбце Логируется атрибуты, изменение которых должно подписывать объект на экспорт.
Схемы выгрузки XML-файлов#
Схемы выгрузки описывают, как данные объектов Global ERP преобразуются в XML-файл. В схеме задается основной класс, метод выгрузки, версии XML-схемы и правила формирования тегов или атрибутов XML.
Путь: Интеграция и репликация > Настройки > Схемы выгрузки.
Для настройки схемы выгрузки:
Откройте список схем выгрузки.
Создайте новую схему и заполните ее основные поля.
В правой верхней области создайте версию XML-схемы.
Для версии задайте перечень атрибутов, которые нужно выгружать в XML-файл.
Для каждого выгружаемого атрибута задайте правило формирования значения.
Если в файл нужно выгрузить составной бизнес-объект, создайте дочернюю схему. Связь объектов разных классов определяется связью, заданной в бизнес-объекте.
Основные поля схемы выгрузки#
Основные поля схемы определяют класс, из которого берутся данные, и способ получения дочерних объектов. Для корневой схемы обычно используется метод load, а для вложенных схем — методы, которые связывают дочерние данные с родительским объектом.
Поле |
Описание |
|---|---|
Код |
Уникальный код схемы. Обязателен для заполнения. |
Наименование |
Наименование схемы. |
Основной класс |
Класс, из которого выгружаются данные по схеме. |
Метод загрузки |
Метод обработки схемы. Для корневой схемы используется |
Примечание |
Описание схемы. |
Условие |
SQL-условие для ограничения данных текущей схемы. Условие добавляется в блок |
Запрос потомков |
SQL-запрос, который возвращает список |
Для корневой схемы ограничение данных выполняется не через поле Условие в схеме, а через Условие фильтрации бизнес-объекта в настройке канала.
Настройка версии XML-схемы#
В версии XML-схемы указываются параметры XML-структуры, которая будет сформирована при выгрузке. Версия позволяет поддерживать несколько вариантов структуры для одной схемы и выбирать нужный вариант через метасхему.
Поле |
Описание |
|---|---|
№ |
Порядковый номер. Заполняется автоматически. |
Наименование |
Наименование версии. |
Обобщающий XML-тег |
Тег, который объединяет несколько однотипных записей, например позиции документа. |
XML-тег |
Тег, который соответствует позиции основного класса схемы. Значения атрибутов могут быть помещены внутрь этого тега как дочерние теги или как атрибуты XML-тега. |
Пример обобщающего XML-тега:
<Документ>
<Наименование>Система вентиляции</Наименование>
<ПозицииДокумента>
<Позиция НомерПозиции="1"/>
<Позиция НомерПозиции="2"/>
<Позиция НомерПозиции="3"/>
<Позиция НомерПозиции="4"/>
</ПозицииДокумента>
</Документ>
Если в XML-файле формируются пустые значения с xsi:nil="true", в корневой тег должен быть добавлен атрибут xmlns:xsi со значением http://www.w3.org/2001/XMLSchema-instance.
<ЭлементНоменклатуры xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<КлючевыеСвойства>
<Ссылка>76501/60</Ссылка>
<НаименованиеПолное>Шайба 40Х13 ГОСТ 5632-72 24.4x13 ГОСТ 13465-77</НаименованиеПолное>
<КодВПрограмме>01992134024</КодВПрограмме>
<КодТНВЭД xsi:nil="true"/>
<ТипТМЦ xsi:nil="true"/>
<ВидВедомости xsi:nil="true"/>
</КлючевыеСвойства>
</ЭлементНоменклатуры>
Настройка атрибутов выгрузки#
Атрибуты настраиваются в детализации версии XML-схемы. Каждая строка определяет, какой тег или атрибут XML будет создан и откуда система возьмет его значение. За счет разных источников можно выгружать прямые атрибуты объекта, значения связанных объектов, константы, результаты SQL-запросов, JEXL-выражений и прикрепленные файлы.
Поле |
Описание |
|---|---|
№ |
Порядок добавления тегов в XML. |
XML-тег |
Имя тега или атрибута XML. |
Тип тега |
Способ записи значения: Нода, Атрибут или Рутовая нода. Значение Рутовая нода в базовом сценарии не используется. |
Источник |
Источник значения: атрибут класса, атрибут ссылочного класса, константа, функция, SQL-текст, SQL-текст XML, JEXL-текст или файл |
Имя атрибута |
Системное имя атрибута основного класса. |
Имя атрибута ссылочного класса |
Системное имя атрибута ссылочного класса. |
Формат |
Шаблон форматирования значения. Для атрибутов типа |
Значение/Функция |
Константа или функция, которая используется для получения значения. |
SQL-текст |
SQL-запрос, который возвращает одно текстовое значение. |
Активность |
Признак активности правила. |
Использовать формат Истина/Ложь |
Позволяет выгружать логические значения как |
Внешняя система для GUID |
Внешняя система, идентификатор которой используется для GUID. Если настройка указана и в атрибуте XML-схемы, и в метасхеме, приоритет имеет настройка атрибута XML-схемы. |
Для источника Константа можно использовать специальные значения:
Значение |
Описание |
|---|---|
|
Возвращает значение поля Идентификатор версии из метасхемы для данной XML-схемы. |
|
Возвращает текущие дату и время. |
|
Возвращает имя системы Global ERP из справочника внешних систем. |
Для выгрузки прикрепленных файлов используется источник Файл btk. В поле Имя атрибута указывается ссылка на файл в объекте. Если файл прикреплен через промежуточную коллекцию, например Btk_FileAttach, выгрузка настраивается через соответствующий дочерний класс.
Порядок настройки экспорта данных#
Для настройки экспорта через файлы:
Создайте внешнюю систему:
Интеграция и репликация > Настройки > Внешние системы.Создайте и настройте метасхему интеграции, в которой указан перечень бизнес-объектов для экспорта.
Для каждого выгружаемого бизнес-объекта настройте схему выгрузки.
Настройте правила интеграции в канале информационного обмена.
В менеджере заданий настройте расписание и включите задание, которое было создано в поле Агент при создании канала обмена.
Для ручного подписания объектов на экспорт выполните скрипт
Rpl_IntXmlSnapshotAgentApi.run()через интерфейсСервис > Инструменты > Выполнить JEXL-скрипт.
Настройка импорта#
Импорт используется для загрузки данных из внешней системы в Global ERP. Через механизм импорта можно выполнять регулярный обмен, перенос нормативно-справочной информации, загрузку начальных данных и обработку входящих XML-файлов.
Состав загружаемых данных, правила сопоставления, порядок обработки и источник данных определяются каналом информационного обмена, метасхемами и схемами загрузки. При настройке импорта важно заранее определить ключи поиска записей: по ним система решает, нужно обновить существующий объект или создать новый.
Схемы загрузки XML-файлов#
Схемы загрузки описывают, как система разбирает XML-файл и записывает данные в объекты Global ERP. Иерархия схем должна соответствовать структуре XML: корневая схема обрабатывает основной тег, дочерние схемы — вложенные теги и коллекции.
Путь: Интеграция и репликация > Настройки > Схемы загрузки.

Интерфейс настройки схем загрузки разделен на несколько областей:
левая область содержит дерево схем, которое соответствует вложенности тегов в XML-файле;
правая верхняя область содержит версии выбранной схемы;
правая нижняя область содержит параметры схемы и правила обработки атрибутов.
Основные поля схемы загрузки#
Поле |
Описание |
|---|---|
Код |
Уникальный код схемы. Обязателен для заполнения. |
Наименование |
Наименование схемы. |
Основной класс |
Класс, в который загружаются данные по схеме. |
Метод загрузки |
Метод обработки схемы. Для корневой схемы используется |
Примечание |
Описание схемы. |
Тег рекурсивен |
Признак, который используется, если внутри тега содержится тег с таким же именем и при загрузке нужно сформировать дерево. |
Предок на два уровня выше |
Используется, если предок для создаваемой записи расположен на два уровня выше в иерархии схем. |
Запрос потомков |
SQL-запрос, который возвращает список |
Пример рекурсивной структуры для загрузки иерархии групп ТМЦ:
<Группа>
<Ссылка>aa6666fb-f31f-11e4-825f-448a5bc9fffa</Ссылка>
<Наименование>Материалы</Наименование>
<Код>00000000796</Код>
<Группа>
<Ссылка>5ea96b2a-7a45-11e6-80c8-000c2914ea2f</Ссылка>
<Наименование>ПРОКАТ ЧЕРНЫХ МЕТАЛЛОВ</Наименование>
<Код>00000010251</Код>
<Группа>
<Ссылка>18bebff9-7a45-11e6-80c8-000c2914ea2f</Ссылка>
<Наименование>Сталь сортовая</Наименование>
<Код>00000010248</Код>
</Группа>
</Группа>
</Группа>

Настройка версии XML-схемы#
В версии XML-схемы указываются параметры XML-структуры, которая используется при загрузке.
Поле |
Описание |
|---|---|
№ |
Порядковый номер. Заполняется автоматически. |
Наименование |
Наименование версии. |
Обобщающий XML-тег |
Тег, который объединяет несколько одинаковых тегов. Можно указать полный путь через |
XML-тег |
Тег, который соответствует позиции основного класса схемы. Можно указать полный путь через |

Настройка атрибутов загрузки#
Атрибуты задают правила чтения значений из XML-файла и записи этих значений в атрибуты классов Global ERP. В этой настройке определяется не только источник значения, но и поведение при поиске, отсутствии значения или ошибке сопоставления.
Поле |
Описание |
|---|---|
№ |
Порядок загрузки атрибутов. Важен, если значения уже загруженных атрибутов используются в SQL-запросах для получения других значений. |
XML-тег |
Имя тега или атрибута тега, значение которого нужно загрузить. Атрибут тега указывается через |
Тип тега |
При загрузке XML-файлов не используется. |
Источник |
Источник значения: атрибут класса, атрибут ссылочного класса, константа, функция, SQL-текст, SQL-текст XML, JEXL-текст или файл |
Имя атрибута |
Системное имя загружаемого атрибута. |
Формат |
Формат даты для атрибутов типа |
Значение/Функция |
Константа или функция, если выбран соответствующий источник. |
SQL/JEXL-текст |
SQL-запрос или JEXL-выражение для получения значения. SQL-запрос должен возвращать одно текстовое значение. |
XML-схема |
Другая схема загрузки, если значение нужно получить через отдельную схему. |
Активность |
Признак применения правила. |
Для поиска |
Признак, который включает атрибут в ключ поиска записи. Если запись найдена, она обновляется; если не найдена, создается новая. |
Использовать формат Истина/Ложь |
Для сценариев обмена с 1С позволяет использовать значения |
Требуется заполнение |
Если признак установлен и в теге нет значения, новая позиция класса не создается. |
Обязателен |
Если признак установлен, при отсутствии значения в теге возникает ошибка. |
Ошибка, если не найдено значение при заполненном теге |
Если в теге есть значение, но SQL-текст, функция или XML-схема не вернули результат, возникает ошибка. |
Внешняя система для GUID |
Внешняя система, к которой относится внешний идентификатор. |
В SQL-запросах можно использовать параметры:
:t— значение текущего XML-тега;:sCode— значение другого загруженного атрибута текущей схемы, гдеsCodeзаменяется на системное имя атрибута;:super$sCode— значение атрибута из основного класса вышестоящей схемы.
Пример SQL-запроса:
select case
when cast(:bNotActive as varchar) = '1'
then :t || '/' || :id
else :t
end
Для источника JEXL-текст доступны переменные id, currentStringValue, currentXmlNode и idMetaSchema. Итоговое значение должно быть приведено к типу String, например toString(id).
Загрузка прикрепленных файлов#
При импорте можно загружать не только значения атрибутов, но и файлы, связанные с объектом. Для этого в схеме загрузки используется источник Файл btk, а файл сохраняется в указанное файловое хранилище.
Для загрузки файлов в Прикрепленные файлы:
Под схемой загрузки объекта, к которому должны прикрепляться файлы, создайте дочернюю схему с методом загрузки
byParent.В поле Основной класс укажите класс-развязку между
Btk_Fileи основным классом вышестоящей схемы. Например, можно использоватьBtk_AttachItemилиQj_QuestionFile.В версии схемы добавьте атрибут и выберите источник Файл btk.
В поле Значение/Функция укажите системное имя файлового хранилища, в которое нужно загружать файлы.
Примечание
Системное имя файлового хранилища можно посмотреть в интерфейсе Настройка системы > Сущности > Файловые хранилища.

Чтобы при загрузке для файла формировалось имя, в настройках атрибутов добавьте позицию с именем атрибута FileName и снимите признак Активность для этой позиции.
Нестандартные случаи загрузки#
В некоторых сценариях стандартного сопоставления тегов XML с атрибутами класса недостаточно. Тогда используются дополнительные признаки схемы, постобработка или вызов API-методов, которые формируют связанные данные после основной загрузки.
Формирование иерархии групп при загрузке ТМЦ#
Для формирования групп при загрузке позиции справочника настройте отдельную схему для группы ТМЦ и установите признак Тег рекурсивен.
В функции постобработки добавьте скрипт, который привяжет корневую группу из XML-файла к нужной группе справочника ТМЦ.
var rop = Btk_GroupApi.loadByGid(gidObject.toString());
var jrop = new("ru.bitec.app.gtk.jexl.session.JexlRop", rop);
if (jrop.idParentGroup == null)
Btk_GroupApi.setidParentGroup(rop, 3503L);
В схеме загрузки ТМЦ добавьте скрипт, который вызывает метод Bts_XmlSchemaVerApi.parseStringXMLReturnLastObjId(spXml: String, idpHeadClass: Long, idpMetaSchema: Long).
Параметры метода:
spXml— XML для разбора по схеме загрузки;idpHeadClass— идентификатор основного класса, по которому создаются записи. При загрузке групп это идентификатор классаBtk_Group;idpMetaSchema— идентификатор метасхемы. В параметр передаетсяdMetaSchema.get().
Метод возвращает идентификатор последнего загруженного объекта. Для групп это идентификатор самой нижнеуровневой группы, который можно использовать в постобработке.
var idgroup = Bts_XmlSchemaVerApi.parseStringXMLReturnLastObjId(sXml.toString(), 501L, idMetaSchema.get());
var rop = s_GoodsApi.loadByGid(gidObject.toString());
Btk_ObjectGroupApi.register(rop, idgroup, 0B, 1B);
commit();
Загрузка типа объекта для ТМЦ#
Некоторые классы требуют дополнительной настройки расширения типов. Для класса Bs_Goods настройка используется при загрузке атрибута idObjectType.
Для корректной загрузки idObjectType выполните настройку типов объекта для соответствующего класса в интерфейсе настройки типов объектов.

Порядок настройки импорта данных#
После настройки схем загрузки и канала выполните тестовую загрузку на небольшом наборе данных. Это позволяет проверить ключи поиска, обязательные поля, преобразование типов и обработку ошибок до включения регулярного расписания.
Для настройки импорта:
Создайте внешнюю систему:
Интеграция и репликация > Настройки > Внешние системы.Создайте и настройте метасхему интеграции. Обычно для одной внешней системы создается одна метасхема.
Создайте XML-схемы, по которым будут разбираться входящие данные.
Настройте правила интеграции в канале информационного обмена.
В менеджере заданий настройте расписание и включите задание, которое было создано в поле Агент при создании канала обмена.