
FormModel
     动态表单模型所引用的类别和元素定义
FormModelTemplate.xml
     动态表单模型对特有属性进行修改，比如在动态表单里面的字段无需指定字段名
 
 
 属性编辑器
 
 多语言翻译：  元模型文件文件生成占位符， $@{[词条ID],[原文]}@     如<Name>$@{[FormItemProperty_1],[布局模式]}@</Name>
             在对应properties文件增加词条
             词条ID规则，文件名_数字    如 FormItemProperty.xml 文件中   FormItemProperty_1
     
 控制规则
    1.  属性显示
       1.1 控制属性当元素的容器类型是指定类型时显示/隐藏
           格式： <Hide>{"parentTypes": 类型标识1,类型标识2,...,"hide":true/false}</Hide>
       	   例子：当字段在字段容器上是该属性才显示，其他容器上隐藏	<Hide>{"parentTypes": "FieldsetPanelAp","hide":false}</Hide>
       1.2 控制字段属性当字段代理是指定类型并且字段类型是指定类型时隐藏
           格式：<Hide>{"types": ["字段代理类型1，字段代理类型2,..."],"fieldTypes":[字段类型1,字段类型2,...]}</Hide>
           例子：锁定性在基础资料属性、创建日期等字段在字段代理时隐藏
                <Hide>{"types": ["FieldAp","EntryFieldAp","CardEntryFieldAp"],"fieldTypes":["BasedataPropField","CreateDateField","BillStatusField","ModifierField","ModifyDateField"]}</Hide>
       1.3 控制字段属性当字段代理是指定类型并且字段类型是非指定类型时隐藏
           格式：<Hide>{"types": ["字段代理类型1，字段代理类型2,..."],"fieldTypes":[字段类型1,字段类型2,...]}</Hide>
           例子：属性在非数字类型在分录字段代理时隐藏
                <Hide>{"types": ["EntryFieldAp"],"fieldTypes":["DeciamelField"],"hide":false}</Hide>
       1.4 父类的属性在子类中不显示
       		格式： <Property action="remove" oid="属性名"/>
            例子：金额字段继承了数字型字段，精度和小数精度在金额字段不显示
	       	<Style Id="AmountField">
				<Properties>
					<Property style="CurrencyFieldIdProperty"/>
					<Property style="DataScopeProperty"/>	
					<Property action="remove" oid="Precision"/>
					<Property action="remove" oid="Scale"/>
				</Properties>
			</Style>      
		1.5 按照属性条件控制属性是否显示,条件可为多个条件，例子：
			隐藏某个属性
		   	<Action>
		   			{"items": 
						[
				   			{"condition":"is('ButtonStyle',0)|| is('ButtonStyle',1)","action":{"name":"hideproperty","args":["ImageKey"]}},
							{"condition":"is('ButtonStyle',0)|| is('ButtonStyle',1)","action":{"name":"hideproperty","args":["ImageKey"]}}
				   		]
					}
		   	</Action>
		   	父容器属性影响子容器属性是否隐藏
            <Style Id="HomeTabProperty">
                <PropertyName>HomeTab</PropertyName>
                <Name>首页签</Name>
                <Editor>{"type":"checkbox","default":false}</Editor>
                <Description>设置当前页签是否为首页</Description>
                <Action>
                    {
                        "items": [
                            {
                                "condition": "is('TabStyle',1) || is('TabStyle',2) || is('TabStyle',3)",
                                "action": {"name": "hideproperty", "args": ["HomeTab"], "affectedByParent": true}
                            }
                        ]
                    }
                </Action>
            </Style>
		   	根据控件类型隐藏某些属性
		   	<Action>
		   			{"items": 
						[
				   			{"condition":"is('EntityType','TreeEntryEntity')","action":{"name":"hideproperty","args":["SplitPage"]}}
				   		]
					}
		   	</Action>
		   	某个属性的值发生更新，重置另外一个属性
		   	<Action>
					{"items":
						[
							{"condition":"isChange('RefBaseFieldId')","action":{"name":"resetproperty","args":["RefDisplayProp"]}}
						]
					}
			</Action>
			支持'非'操作, 例如：
			打印模板不是自定义纸张类型时，锁定宽、高
		   	<Action>
					{"items":
						[
							{"condition":"!is('Paper','custom')","action":{"name":"lockproperty","args":["Width","Height"]}}
						]
					}
			</Action>
		1.6 属性缺省值问题：同一种属性在不同的元模型缺省值不一致，需要带上value值，改变属性反序列化时的缺省值，以boolean为例
			<Style Id="GroupControlProperty">
				<PropertyName>GroupControl</PropertyName>
				<Name>集团控制</Name>
				<Editor>{"type":"checkbox", "value":false, "default":false}</Editor>
			</Style>
			<Style Id="GroupControlProperty">
				<PropertyName>GroupControl</PropertyName>
				<Name>集团控制(公共)</Name>
				<Editor>{"type":"checkbox", "default":true}</Editor>
			</Style>
		1.7 按照属性条件控制属性是否锁定,条件可为多个条件，例子：锁定父模板继承过来的字段的key，拓展单据父类的表名锁定
			<Action>
			{
				"items":[
					{"condition":"is('Inherit', true)","action":{"name":"lockproperty","args":["key"]}},
					{"condition":"is('Inherit', true) &amp;&amp; isGlobal('devType','2')","action":{"name":"lockproperty","args":["TableName"]}}
				]
			}
			</Action>      
		1.8 A属性影响B属性，relatedProperty：触发名，relatedPropName：哪个属性变化，例子：余额模型的余额类型变化，导致字段的业务类型选项变化
			<Action>
				{
					"items":[
						{
						"action": {	
							"name": "relatedProperty", "relatedPropName": ["BizDataType"],
							 	"relatedOptionList":{
										"realtime": [
											{"id":"main","name":"主字段"},
											{"id":"aux","name":"辅助信息"}],
										"period": [
											{"id":"main","name":"主字段"},
											{"id":"dim","name":"普通维度"}]
								}
						}
					}
				}
			</Action>      
    2、父子关系类型控制规则
       1.1 控制容器只接受指定类别的控件类型
       		格式：<Accept>{"basetypes":[类别,...]}</Accept>
       		例子：容器只接受字段类型<Accept>{"basetypes":["Field"]}</Accept>
       1.2	控制容器只接受指定类型的控件类型
       		格式	: <Accept>{"ids":[类型,...]}</Accept>
       		例子：页签控件只接受页签页控件<Accept>{"ids":["TabPageAp"]}</Accept>
       1.3 控制控制只能放置到指定类型的容器   	
            格式：<AcceptParent>{"ids":[容器控件类型,...]}</AcceptParent> 
            例子：卡片字段只能放置到卡片分录行和卡片分录布局容器<AcceptParent>{"ids":["CardEntryRowAp","CardEntryFlexPanelAp"]}</AcceptParent>
       1.4 控制容器只接受指定类别的控件类型，同时去掉接受类型的某些控件类型
            格式：<NotAccept>{"ids":["类别"]}</NotAccept>
            例子：去掉分录中间的单选按钮和单选按钮组<NotAccept>{"ids":["RadioField","RadioGroupField"]}</NotAccept>
