<?xml version="1.0" encoding="utf-8"?>
<Entity 
Schema="VCLib" 
Name="DATAFORM_TEMPLATE" 
Description="Шаблон для форм" 
PrimaryKey="DataformTemplateID">
  <Fields>
    <Attribute Name="DataformTemplateID" Index="3000001" Type="guid" Description="Идентификатор" />
    <Attribute Name="Name" Index="3000002" Type="string" Description="Наименование" CharacterMaximumLength="128" Required="1" />
    <Attribute Name="Category" Index="3000003" Type="string" Description="Категория" CharacterMaximumLength="128" />
    <Attribute Name="TemplateData" Index="3000004" Type="text" Description="Значение шаблона" />
    <Attribute Name="FormContext" Index="3000006" Type="string" Description="Контекст формы" CharacterMaximumLength="64" />
    <Parent Name="Users" Index="3000005" Type="VCLib.BASE_USERS" Description="Пользователи системы" />
    <Parent Name="Entities" Index="3000007" Type="VCLib.ENTITIES" Description="Сущность метаданных" Required="1" />
    <Attribute Name="CreationDate" Type="date" Description="Дата создания шаблона" />
    <Attribute Name="LastUsageDateTime" Type="datetime" Description="Время последнего использования шаблона" />
    <Choice Name="Status" Description="Статус работоспособности шаблона">
      <Item Name="Неработоспособен" Index="0" />
      <Item Name="Работоспособен" Index="1" />
    </Choice>
    <Choice Name="TemplateType" Description="Тип шаблона" Required="1">
      <Item Name="Lexem" Index="0" />
      <Item Name="xml" Index="1" />
    </Choice>
    <Choice Name="ShareTemplate" Description="Видимость шаблона" Required="1">
      <Item Name="Мне (текущий пользователь)" Index="0" />
      <Item Name="Подразделению пользователя" Index="1" />
      <Item Name="Всем (подразделению пользователя и всем дочерним)" Index="2" />
    </Choice>
    <Attribute Name="HasParent" Type="bool" Description="Существует шаблон с пользователем более высокого уровня доступа.">
      <Parameter Name="DivisionID" Description="Подразделение" Type="object">
        <lx:ParamHolder xmlns:lx="lexem">
          <lx:StepString name="CURRENT_USER_DIVISION" />
        </lx:ParamHolder>
      </Parameter>
    </Attribute>
    <Attribute Name="HasChild" Type="bool" Description="Существует шаблон с пользователем более низкого уровня доступа.">
      <Parameter Name="DivisionID" Description="Подразделение" Type="object">
        <lx:ParamHolder xmlns:lx="lexem">
          <lx:StepString name="CURRENT_USER_DIVISION" />
        </lx:ParamHolder>
      </Parameter>
    </Attribute>
  </Fields>
  <DbMapping>
    <Table name="T_DATAFORM_TEMPLATE">
      <Map Name="DataformTemplateID" Column="DataformTemplateID" />
      <Map Name="Name" Column="Name" />
      <Map Name="Category" Column="Category" />
      <Map Name="TemplateData" Column="TemplateData" />
      <Map Name="FormContext" Column="FormContext" />
      <Map Name="Users" Column="Users" />
      <Map Name="Entities" Column="Entities" />
      <Map Name="CreationDate" Column="CreationDate" />
      <Map Name="LastUsageDateTime" Column="LastUsageDateTime" />
      <Map Name="Status" Column="Status" />
      <Map Name="TemplateType" Column="TemplateType" />
      <Map Name="ShareTemplate" Column="ShareTemplate" />
    </Table>
    <Lexem>
      <Map Name="HasParent">
        <lx:Case xmlns:lx="lexem">
          <When>
            <lx:TreeQuery EntityName="VCLib.DIVISIONS" QueryType="HaveChild" xmlns:lx="lexem">
              <path>
                <lx:Path OwnerQueryLevel="0">
                  <lx:StepInt index="3000005" />
                  <lx:StepInt index="50017" />
                </lx:Path>
              </path>
              <condition>
                <lx:Criterion type="=">
                  <lx:Path OwnerQueryLevel="0">
                    <lx:StepInt index="330001" />
                  </lx:Path>
                  <lx:Argument>
                    <lx:ConstOperand type="Int32">0</lx:ConstOperand>
                  </lx:Argument>
                </lx:Criterion>
              </condition>
            </lx:TreeQuery>
          </When>
          <Then>
            <lx:ConstOperand type="Boolean">True</lx:ConstOperand>
          </Then>
          <Else>
            <lx:ConstOperand type="Boolean">False</lx:ConstOperand>
          </Else>
        </lx:Case>
      </Map>
      <Map Name="HasChild">
        <lx:Case xmlns:lx="lexem">
          <When>
            <lx:TreeQuery EntityName="VCLib.DIVISIONS" QueryType="HaveParent">
              <path>
                <lx:Path OwnerQueryLevel="0">
                  <lx:StepInt index="3000005" />
                  <lx:StepInt index="50017" />
                </lx:Path>
              </path>
              <condition>
                <lx:Criterion type="=">
                  <lx:Path OwnerQueryLevel="0">
                    <lx:StepString name="DivisionID" />
                  </lx:Path>
                  <lx:Argument>
                    <lx:ConstOperand type="Int32">0</lx:ConstOperand>
                  </lx:Argument>
                </lx:Criterion>
              </condition>
            </lx:TreeQuery>
          </When>
          <Then>
            <lx:ConstOperand type="Boolean">True</lx:ConstOperand>
          </Then>
          <Else>
            <lx:ConstOperand type="Boolean">False</lx:ConstOperand>
          </Else>
        </lx:Case>
      </Map>
    </Lexem>
  </DbMapping>
</Entity>