本文介绍了金蝶云星空系统中如何通过BOS平台快速找到单据的后台表结构,理解单据与数据库表之间的联系。作者详细阐述了单据的表结构与BOS单据的关系,包括单据的构成、实体的层次关系、以及实体表结构与数据库表结构的对应关系。同时,提供了通过BOS找到单据实体结构、业务字段名、拆分表、主键字段名等信息的方法,并强调了注意事项和应用小结,帮助读者更好地理解和应用金蝶云星空系统。
一、业务背景
接触金蝶云星空这个系统,你是否经常在找表时不只所错?
不知道这个单据存在哪?某个字段又从哪取数?
"谁有最新的数据字典?"
金蝶云星空系统数据后台是典型的关系型数据库,那么在系统应用或者开发过程中,肯定少不了SQL的使用,这个系统使用了EF CodeFirst 技术,只要在BOS里面添加单据元数据就会自动生成单据对应的后台表结构。那么,系统的“数据字典“就是一个谜了,虽然官方也发布了数据字典PDM文档,但也仅限于标准产品的字段,二开字段肯定是没有的,那么我们就需要一个方法能够快速的找准单据的后台表结构。
今天凭着个人经验总结,给大家分享一下如何通过BOS快速找到单据的表结构,理解BOS单据与数据库表之间的联系。
BOS平台的强大,也许超乎你的想象,打开后台数据库表这个"黑盒子",也许你就差这一步了!
你想获取的信息 ,也许就在眼前,只是你不知道而已,世界上最遥远的距离莫过于此!
掌握这个知识技巧之后,你就不会太依赖于"数据字典了"!
二、关键步骤
1.知识储备
我们要研究金蝶云星空的后台表结构,需要具备2个基础:
数据库基础,SQL基础
会使用金蝶云星空BOS平台
2.重新认识单据
数据基础和SQL基础我就不多说了,大家应该比我更擅长,我这里简单给大家剖析介绍一下:《单据的表结构与BOS单据的联系》
众所周知,金蝶云星空系统是由不同类型的业务对象构成的,最常见的就是:单据、基础资料。
虽然系统中有这么多的业务对象类型,但核心都是以单据(也可称为表单)为基础的,我们来重新认识一下单据的构成。
下图是一个单据的主要构成,简单来讲单据就是由布局控件+实体字段构成。布局控件就是仅用于界面展示,不会存储实际物理数据,而实体字段除了有特定的展示效果之外,更重要的是构成了单据业务数据,会存储到数据库物理表中。
单据实体数据,就是上图中红色的内容。系统中的实体就只有上图中的4种。
对于实体,我们可以这样理解,实体是一层一层的,最外层是单据头,单据头里面可以有多个子单据头或者多个单据体,子单据体则是单据体的下一层,子单据体下面其实还可以再挂子单据体,这样单据的数据就可以呈现"树形"结构了,多个不同的实体组合成了一个单据,实体字段都是放在这些实体中的!我们只要搞清楚实体的层次关系就能知道后台表结构的关系了。
(扩展:对于单据实体构成详细介绍,我写过另外的文章讲解,可以参考看看:【Python插件入门】第3篇:插件中如何进行数据操作)
3.单据的实体结构与数据库表结构之间的联系
什么!你问我一个单据对应几张表?实体构成了单据,实体表结构就是单据的数据库表结构!
下面我们用一张图看懂1个实体的表构成逻辑,只要我们理解了这张图,就掌握了BOS中的"数据字典"!
这里不能发语音,关于这个知识的视频讲解,如需要可私信我获取,这里简单介绍一下:
1个实体由实体主表+实体拆分表构成,是实体拆分表又可以分为多业务拆分表+多语言拆分表(实体主表一定有,拆分表不一定有!)
拆分表:表名的构成规则是"实体主表名_拆分表后缀",查询拆分表中的字段时,只需要知道拆分表的后缀就可以了。
多语言表:表名的构成规则是"实体主表名_L",只要实体中存在多语言文本,就会自动生成这个表,并将多语言字段名添加到这个表中。
实体主键:可以分为单据(主单据头)主键、子单据头主键、单据体主键、子单据体主键,常见的命名规范如上图所示。
实体主表、拆分表、多语言表通过实体主键进行关联。
除了业务字段之外,我们应该更注意实体主键的使用,这是把多个表、多个实体连接起来的“标记”。实体表中的单据主键标记了这个实体数据属于哪个单据,拆分表中的实体主键标记了这个拆分表数据属于哪一个实体主表。
基础资料/辅助资料字段(F8字段):实体表中的F8字段记录的是该资料数据的主键,通过这个数据可以关联对应资料类型的单据数据。
这些主键通常被称为"内码"或者"ID",字段类型也分为整数、字符串,这两种,并不是所有ID都是整数,这个要注意!
上面描述的这些信息知道了,你还需要数据字典吗?其实BOS单据里面已经告诉了我们这些信息,你平时注意到了吗?
3.通过BOS来找到单据实体结构
怎么通过BOS来找到单据实体结构、业务字段名、拆分表、主键字段名等信息呢?下面我们通过BOS单据截图来剖析。
我们在BOS中打开一个单据来看下单据的实体结构,点开【批量编辑字段属性】即可查看实体结构,以采购订单为例:
PS:【批量编辑属性】界面只会显示单据的实体结构信息,不会显示其他布局控件,更容易帮助我们分析单据的实体结构哦!
先看单据的【表单属性】,可以知道单据的主键字段名和主键字段类型
找到单据的最外层--单据头,也可以称为单据的【主实体】
展开单据头实体,选中一个字段看一下
再选择一个基础资字段看看
多语言文本字段
看下子单据头
看下子单据头的字段:查询单据头字段时,要注意看字段的所属实体是不是子单据头!
我们再来看看单据体
看看单据体的字段:查询单据体的字段,要注意看所属拆分表是不是[缺省值]
下面看看子单据体:子单据体的数据不能直接与单据头信息关联,子单据体是单据体的下级,所以要先关联父分录。
4.注意事项
看完上面采购订单的单据剖析,你应该明白了BOS单据结构与数据库表的关系,还有一些注意点:
通常来需要查数据库时是这样的顺序:明确查询字段->找字段所在实体->实体主表名->字段是否在拆分表中->与其他实体进行关联
标准产品通常会把不同子单据头的数据放在不同的页签,但是要注意表面上看到字段所在的页签,不代表字段在这个实体中,一定要在BOS单据中看实体结构,才是最准确的
前面截图中右上角的说明:同一单据中4种实体之间的强关联逻辑(系统自带的关联性),对于这个问题再强调2点:
①多单据体之间并无强关联,只是分别和单据头有强关联(通过单据主键关联)。
②子单据体只能先和父分录单据体关联(通过父分录实体主键),然后再往上级的实体进行关联。
保存/修改写入数据时:可以把单据理解成数据录入的的界面,然后根据实体结构写入数据库表中。
查询读取数据时候:系统又根据实体表构成从对应的数据库表中读取数据。
三、应用小结
了解这个知识点之后,让你对系统的数据构成与存储应该更深一步了,相信遇到问题也会有更多分析和解决思路。
不管是二开字段还是标准字段,通过数据库查询、更新,都不再是问题了。
二开单据时,也要注意表与字段的命名规范,了解这个结构之后,你也能设计出更适合业务需求的单据结构。
好了,就讲这么多,至此正文结束=================================================
单据的表可以绑定视图哦,这个功能大有用处,后续我也会做相关的实践分享,敬请期待。
大家多多点赞、评论、收藏,一波三连走起来,感谢大家捧场!
推荐阅读