В разделе метаданных описывается структура выгруженных объектов. «Объект» в терминах KPI MONITOR - это объект сложной структуры, который физически может храниться в нескольких таблицах реляционной БД. Он состоит из набора полей простых типов (включая «ссылочные» поля, ссылающиеся на другие объекты).
Один класс объектов описывается в рамках тэга «RecordType». Атрибут «Name» содержит имя класса. Далее может следовать описание полей. Если документы данного класса присутствуют в файле, то внутри тэга описываются все поля, которые выгружались, если документы данного класса сами не выгружались, но на них есть ссылки, то описание сворачивается до одной строки:
<RecordType Name=«Test. Справочники . Товар »/>
Одно поле документа описывается в рамках тэга «Field». Атрибут «Name» содержит имя поля (логическое имя, которым оперирует KPI MONITOR, физическое имя поля в таблице БД может отличаться, хотя для MS SQL Server, обычно они совпадают). Если имя поля содержит русские буквы, то для него вводится синоним с помощью атрибута «AttrName». В секции данных значение поля будет задаваться через имя поля или через синоним, если он есть. Синоним имеет вид «c1», «c2» и т.д. и является уникальным в рамках структуры документа (не документа в целом!). Далее атрибутом «Type» задается тип поля, и в зависимости от типа могут следовать различные уточняющие атрибуты.
Пример :
<Field Name="Fax" Type="String" MaxLength="30"/>
<Field AttrName="c1" Name=" Адрес " Type="String"/>
|
Возможные значения атрибута Type:
- Boolean
- Date
- Real
- String (Размер строки - в атрибуте MaxLength)
- Ref (Класс документа - в атрибуте RefName)
- Struct
- StructArray
Ссылочные поля имеют тип «Ref», дополнительный атрибут «RefName» содержит имя класса документа, на который указывает ссылка, например:
<Field Name="Resource" Type="Ref" RefName="Test. Справочники . Товар "/>
|
Структура, это поле имеющее тип «Struct». Тэг, описывающий структурное поле не закрывается сразу, а образует группу, внутри которой описываются поля структуры (вложенность структур не ограничена), пример:
<Field AttrName="c1" Name=" ФИО " Type="Struct">
<Field AttrName="c0" Name=" Фамилия " Type="String"/>
<Field AttrName="c1" Name=" Имя " Type="String"/>
<Field AttrName="c2" Name=" Отчество " Type="String"/>
</Field>
|
Подтаблица, это поле имеющее тип «StructArray»
<Field AttrName="c1" Name=" Позиции " Type="StructArray">
<Field Name="Index" ServiceType="ID" Type="Integer"/>
<Field AttrName="c1" Name=" Товар " Type="Ref" RefName="Test. Справочники . Товар "/>
<Field AttrName="c2" Name=" Цена " Type="Real"/>
<Field AttrName="c3" Name=" Количество " Type="Real"/>
<Field AttrName="c4" Name=" Сумма " Type="Real"/>
</Field>
|
Некоторые поля играют особую роль, и являются «служебными». Такие поля помечаются атрибутом «ServiceType»
Возможные значения тэга ServiceType:
- ForeignKey (Тип любой, обычно - String)
- ExtID (Type=«String»)
- Deleted (Type=«Boolean»)
- HGroup (Type=«Boolean»)
- HParent (Type=«Ref»)
- ID (Type=«Integer»)
ForeignKey - ключ записи. Через значение данного поля происходит ссылка на документ. Он может быть любого типа, но должен быть уникальным в рамках одного класса объектов.
ExtID - в принципе, то - же самое что ForeignKey, но может быть только строковым и имя поля всегда «ExtID». У класса записи обязательно есть одно (и только одно) поле с ServiceType = ForeignKey или ExtID
Deleted - признак того, что запись помечена как удаленная
HGroup, HParent - поля для поддержки иерархии
ID - целочисленное поле, управляющее порядком следования строк в подтаблице