文档介绍:K3总账数据结构分析
技术支持部整理
提纲
基础资料
初始化
凭证处理
往来业务管理
结转损益
结账
K3总账数据结构
基础资料
计量单位
科目
零记录
K3总账数据结构
基础资料—计量单位
相关数据表
涉及的表为t_measureunit(计量单位表),t_unitgroup(计量单位组
表)。常用的字段为Fmeasureunitid(计量单位内码),unitgroupid(计
量单位组内码),Fstandard(是否基本计量单位)。
基本计量单位
在一个计量单位组内,只能有一个基本计量单位,即Funitgroupid 字
段值相同的记录,只能有一条记录的Fstandard字段值为1,如果一个组内
有两个Fstandard=1的计量单位,则会造成一些报表数据翻倍。
计量单位丢失
K3中有很多表引用“计量单组ID”和“计量单位ID”,比如科目,凭证,物
料,物流单据,余额表、BOM等等。一旦t_UnitGroup或t_MeasureUn丢
失记录(包括零记录),对引用表来说就产生了“孤立数据”。或者也可以说
XX表与“计量单位表数据不匹配”。
K3总账数据结构
案例
问题描述:在打开基础资料的科目时出现“当前数据不存在”。
原因:经过检查发现出现这个问题的主要原因是由于t_UnitGroup表丢失
了一条零记录。
处理:使用如下sql补上就可以了——
insert into t_UnitGroup
(FUnitGroupID,FName,FDefaultUnitID) values(0,'*',0)
K3总账数据结构
零记录
在K3中很多表都存在零记录,比如:t_currency、t_Measureunit、
t_Item、t_ItemDetail等等。这些零都是系统预置的,有特定的用途,
比如: =0代表不使用数量辅助核算;
=0代表所有币别;
=0代表所有核算项目。
系统预置的零记录不能删除。
K3总账数据结构
孤立记录
孤立记录
“孤立记录”是一个普遍的现象,数据库经常会出现这种问题,这种情况下可以使用 NOT IN 的子查询来判断是否存在“孤立数据”.比如:
凭证的表头存在而凭证表体丢失——
select * from t_Voucher where FvoucherID NOT IN (select FvoucherID from t_VoucherEntry)
ount中根本不存在——
select * from t_Voucher
t_Balance中的FdetailID在t_ItemDetail中不存在——
select * from t_Balance where FdetailID NOT IN (select FdetailID from t_ItemDetail)
K3总账数据结构
币别、凭证字
币别
t_currency,常用到的字段为FcurrencyID(币别内码),FFixRate
(换算率),Fscale(小数位数)等等。
FcurrencyID(币别内码):系统默认记帐本位的FcurrencyID值为1
Fscale(小数位数):在中间层帐套管理中,有个地方设置本位币小数
点位数,就是FcurrencyID值为1的记录对应的Fscale值,可以在此改动
币别对应的小数位数。
凭证字
涉及的表为t_vouchgroup(凭证字表),常用的字段为FgroupID(凭证
字内码),一般被t_voucher(凭证表)引用。
K3总账数据结构
科目
科目
ount(科目表),ountID(科目内
码),FfullName(科目全名),FQuantity(是否数量金额辅助核算),
FMeasureUnitID(计量单位内码),FDetailid(核算项目内码)等。
1)ountID(科目内码)
科目内码一旦被引用,为保证数据的完整性,此科目就不允许删除。
K3总账数据结构
案例
问题描述:gl001帐套中,科目103没有任何业务发生,但是删除时却提
示:“已有业务发生或已被使用,不能删除”。
处理过程:
1、用Profiler跟踪删除过程,发现系统调用了存储过程sp_ObjectInUsed;
2、用“sp_helttext sp_ObjectInUsed”命令查看存储过程,发现sp_ObjectInUsed检测t_Balance、t_VoucherEntry、t_BUDGET、t_ProfitAndLoss是否引用了103科目,但经过检查发现这个表并未引用103科目ID;
3、在sp_Obje