当前位置:首页 > 百科 > 正文内容

金蝶软件核算项目纵横表数据库表结构

admin5个月前 (08-06)百科98

1.t_ItemDetail核算项目横表的功能是用于存储核算项目方案组合情况;

t_ItemDetail必须存在一条FDETAILid=0的特殊记录。

 常用字段

FDetailID: 核算项目使用状况内码

FDetailCount:一个FDetailID对应的核算项目类别个数

Fn列: 由F+数字表示,分别对应核算项目类别表的FItemClassID

t_ItemClass每增加一个核算项目类别,则自动在t_ItemDetail表中增加对应的F列,该表的列随着核算项目类别的增加而动态增长;但是当删除核算项目类别时,在t_ItemDetail表中的F列不会被删除,如果要删除,只有手工通过SQL语句来删除。

image.png

2.案例:在核算项目横表中找到客户“李斌”的记录,根据t_ItemClass找到客户FItemClassID为1,对应t_ItemDetail核算项目横表f1字段;在t_Item表找到FItemClassID=1,且FName=‘李斌’的记录,其FItemID为274,对应t_ItemDetail核算项目横表f1=  274的记录,其FDetailID为6,当您在科目余额表或凭证分录中找到FDetailID=6的记录代表核算项目客户“李斌”。

image.png

3. 为科目下挂核算项目:给科目代码1131.01挂核算项目“客户”,科目代码1131.02挂核算项目“供应商”;

image.png

查询科目表t_Account,这两个科目FDetailID分别为2与3,在核算项目横表t_ItemDetail找到这两行记录,您会发现f1代表客户,f8代表供应商,它们分别有-1的记录,这里的-1仅表示该科目下挂了哪些核算项目类别,不存储核算项目明细数据。值得注意的是每行FDetailCount统计核算项目类别个数,若个数对不上属于数据异常。

image.png

4.为凭证科目下挂核算项目:给1131.01科目添加核算项目明细数据“李斌”;

image.png

查询t_VoucherEntry凭证分录获取到1131.01科目核算项目内码FDetailID,您可以在核算项目横表t _ItemDetail找到这行记录。

image.png

总结:

1. Fx列的默认值=0;

2. 以下所说的Fx代表核算项目类别的使用组合情况:

Fx组合=-1所对应的Fdetailid值,只能被科目表t_account.Fdetailid所使用,不能出现在其他数据表中。

Fx组合>0所对应的Fdetailid值,(被凭证表和科目余额表引用)不能被科目表t_account.Fdetailid所使用。如果存在,应该将t_account.Fdetailid修改为该列为-1对应的Fdetailid值。

FdetailCount:它的值必须是实际的Fx组合个数之和。

在使用核算项目时,系统会检查用户所用的Fdetailid对应的Fx组合是否存在,如果不存在,则自动增加一组新的Fdetailid值。

5.  t_ItemDetailV核算项目纵表是根据t  _ItemDetail横表中的记录生成的。生成该表的存储过程是:sp_cleanitemdetailv。通常横表出现数据异常,纵表数据也要同步修改,修复顺序:先修复横表数据,执行存储过程sp_cleanitemdetailv可将修复后的横表数据同步至纵表。

常用字段

FDetailID: 核算项目使用状况内码

FItemClassID: 核算项目类别ID

FItemID:  核算项目ID

image.png

总结:

1.  t_ItemDetailV表必须存在一条FDetailID =0的特殊记录,这个表中只记录FDetailID, FItemClassID,  FItemID三个字段,它是t_ItemDetail表的简单化反映。只反映t_ItemDetail表中的有效值,去掉了F列为0的信息.。

2.  系统一般是在查询一些账表时用到核算项目纵表,比如查明细帐,如果查出来的核算项目窜户,则可以运行exec  sp_cleanitemdetailv来重新生成过核算项目纵表,这样查明细帐时数据就正常了。而有时也会出现核算项目横表丢失记录,而在核算项目纵表中却保存完好,这时就可以写SQL语句从核算项目纵表中把丢失的记录插回核算项目横表中。