<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   
  <xs:attributeGroup name="Field_Attrs">
    <xs:attribute name="name" type="xs:string" use="required">
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Имя поля.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="caption" type="xs:string" use="optional" >
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
            Подпись поля.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="caption_hint" type="xs:string" use="optional" >
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
            Подсказка к подписи поля.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="CalcAndDataField_Attrs">
    <xs:attribute name="datatype" use="optional">      
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Тип данных поля. Поле не обязательное. По умочанию будет использоваться тип string.
        </xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="guid">
            <xs:annotation>
              <xs:documentation xml:lang="ru-ru">
                Уникальный идентификатор. Используется только для поля id. Значение генерируется автоматически.
              </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="integer">
            <xs:annotation>
              <xs:documentation xml:lang="ru-ru">
                Целочисленный тип.
              </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="datetime">
            <xs:annotation>
              <xs:documentation xml:lang="ru-ru">
                Тип дата/время.
              </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="string">
            <xs:annotation>
              <xs:documentation xml:lang="ru-ru">
                Строковый тип.
              </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="boolean">
            <xs:annotation>
              <xs:documentation xml:lang="ru-ru">
                Логический тип.
              </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
          <xs:enumeration value="float">
            <xs:annotation>
              <xs:documentation xml:lang="ru-ru">
                Вещественный тип.
              </xs:documentation>
            </xs:annotation>
          </xs:enumeration>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="precision" type="xs:nonNegativeInteger" use="optional" >
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Точность вещественного типа.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="size" type="xs:unsignedShort" use="optional" >
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Размер строкового, целочисленного или вещественного типа.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="DataAndSourceAndLookupField_Attrs">
    <xs:attribute name="isNull" type="xs:boolean" use="optional" default="false">
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Признак допустимости "пустых" значений.
          По умолчанию - true.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="readonly" type="xs:boolean" use="optional" default="true">
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Признак "Только для чтения".
          По умолчанию - false.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="isUnique" type="xs:boolean" use="optional" default="true">
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Признак того что поле явлется уникальным.
          По умолчанию - false.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="uniqueLabel" type="xs:string" use="optional" >
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Метка группировки уникальных полей. Поля с одинаковыми метками образуют единый ключ.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="DataAndSourceField_Attrs">    
    <xs:attribute name="syncKey" type="xs:boolean" use="optional" default="true">
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Признак того что поле является ключевым при синхронизации значений с дельта-документом.
          По умолчанию - false.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="noSync" type="xs:boolean" use="optional" default="true">
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Признак того что поле не требуется синхронизировать при синхронизации значений с дельта-документом.
          По умолчанию - false.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="isDeltaValue" type="xs:boolean" use="optional" default="true">
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Признак того что при принудительной (внешней) синхронизации указанное поле следует обновлять 
          как сумма текущего значения + сумма из синхронизируемого документа.
          По умолчанию - false.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="syncDeltaValue" type="xs:boolean" use="optional" default="true">
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Признак того, что при обычной синхронизации, расчет значения этого поля подавляется и 
          его сумма складывается как текущее значение + дельта сумм из синхронизируемого документа.
          По умолчанию - false.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="isStrictEqual" type="xs:boolean" use="optional" default="true">
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Признак, что по количество символов должно ровняться указанному в Size. Ни больше ни меньше.
          Подходит только для типа string.
          По умолчанию - false.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="SourceField_Attrs">
    <xs:attribute name="table" type="xs:string" use="required">
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Таблица-источник, с которой связано поле.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tableKeyField" type="xs:string" use="required">
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Поле-источник из таблицы-источника, с которым связано поле.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="tableFields " type="xs:string" use="required" >
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Поля из таблицы-источника которые отображаются в редакторах.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="LookupField_Attrs">
    <xs:attribute name="keys" type="xs:string" use="required" >
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Поле из таблицы значение которого берется в качестве ключа при поиске в таблице-источнике.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="lookupTable" type="xs:string" use="required" >
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Таблица-источник.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="lookupKeys" type="xs:string" use="required" >
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Поле-источник из таблицы источника, со значением которого сравнивается значение поля из атрибута keys.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="lookupFields" type="xs:string" use="required" >
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Поле из таблицы-источника которое отображаются в редакторах поля.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>

  <xs:attributeGroup name="ExtendedField_Attrs">
    <xs:attribute name="name">
      <xs:annotation>
        <xs:documentation>
          Имя поля из исходной таблицы, которое нужно добавить в производную таблицу.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="caption" type="xs:string" use="optional" >
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Подпись поля.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="caption_hint" type="xs:string" use="optional" >
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Подсказка к подписи поля.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attributeGroup ref="CalcAndDataField_Attrs" />
  </xs:attributeGroup>

  <xs:attributeGroup name="DataTable_Data_RowType_AttrGroup">
    <xs:attribute name="isUserEdited" type="xs:boolean" use="optional">
      <xs:annotation>
        <xs:documentation xml:lang="ru-ru">
          Флаг указывает что данные были отредактированы пользователем.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  
</xs:schema>