QueryService使用注意事项
金蝶云社区-云小爱
云小爱
0人赞赏了该文章 4,611次浏览 未经作者许可,禁止转载编辑于2013年06月21日 08:46:25

QueryServlice是目前查询数据非常好用的服务,但目前在使用过程中由于使用不当产生不少问题,下面将一一解答:

1、在查询一些实体关键字段如实体主键、分录序号时,条件中的别名怎么会变来变去?
QueryServlice设计中,为了和物理数据库结果解耦以及写的过滤条件中字段表名别名与动态SQL算法解耦,
所有字段并非真实的物理字段,而是使用字段的标识,所有在调用QueryServlice使用 表别名.字段名的做法都是错误的做法。
a) 实体关键字段(主键、FFormId、FMasterId、序号)的标识生成规则
业务对象主键标识=业务对象主键字段名
业务对象类型字段(FFormId)标识=业务对象类型字段名
基础资料的唯一键字段标识=基础资料唯一键字段名
分录、子单据头、子单据体主键、序号标识=实体Key_字段名 需要在Select中返回时,返回字段名实体Key_字段名,但如果实体Key_字段名 长度超过30个字符时需要指定字段别名,否则将报标识超长错误。
注:返回的字段名默认等于标识,标识无超长问题,但返回的字段名必须少于30个字符,所以标识超过30个字符时必须指定别名
b)实体上普通字段的标识生成规则
字段的标识=元数据中字段的标识
c)非实体上定义的基础资料属性的标识生成规则
标识 =基础资料字段标识.属性字段标识 ,返回的字段名默认等于 基础资料字段标识_属性字段标识,超过30个字符
需指定别名,否则报标识错误
d)基础资料字段关联的基础资料类型属性的内码的标识生成规则
标识 =基础资料字段标识.属性字段标识.Id
如单据上物料(FItemId)的基本计量单位(FBaseUnitId)的内码
标识 =FItemId.FBaseUnitId.Id
2、实体的表别名生成规则是怎么样的?
实体表的别名生成规则为 t+实体序号,由于元数据定义过程中序号有可能变化所以 别名是不确定的
实体表关联的基础资料表别名 生成规则实体表的别名+随机序号 ,所以别名也是不确定的
所以在排序、过滤条件中不能直接使用别名+字段,应该使用字段标识,查询服务会自动进行翻译转换