本文介绍了金蝶云星空系统中存货模块的报表处理及数据查询方法,包括动态表单的SQL跟踪、成本分表功能的启用确认、以及在不同成本分表启用状态下的数据查询步骤。详细说明了在没有启用成本分表时,通过接口或数据库查询存货收发存汇总表的方法,包括获取物料维度信息、期初数量金额、收入发出数量及金额等。同时,也阐述了在启用成本分表后,如何根据拆分后的表名进行数据查询,并提供了详细的SQL查询示例。此外,还介绍了物料维度的关联关系、库存维度表、核算维度表、出入库序列表等关键数据表的结构及关联方式,以及如何通过SQL查询获取特定物料在特定会计核算体系、会计政策、核算组织下的核算维度和库存维度信息。
导读
存货模块的报表都是动态表单,比如存货收发存汇总表/明细表,动态表单都没有固定的SQL查询脚本,需要用SQL Server Profiler来跟踪报表的取数语句,跟踪方法见https://vip.kingdee.com/link/s/MCtzW。附件有脚本示例供参考。
确认是否启用成本分表功能,启用与不启用查询的后台表有差异。
确认方法1:在客户端右上方的应用菜单栏搜索“启用成本拆分表”,有已启用的拆分期间,就是启用了。
确认方法2:在数据库查询,有结果显示,就是启用了。
SELECT * FROM T_HS_SPLITTABLEENTRY WHERE FSPLITTABLENAME LIKE 'T_HS_INIVBAL%'
一、没有启用成本分表功能的情况
方法1、用接口查询
接口文档:https://openapi.open.kingdee.com/ApiDoc?operateId=916002926564657152
方法2、在数据库查询
准备条件:按会计核算体系+会计政策+核算组织+会计核算年度+核算期间 查到期间内码
SELECT A.FID ,HSTX.FNAME '会计核算体系名称' , KJZC.FNAMe'会计政策名称' , HSZZ.FNAME '核算组织名称' , A.FYEAR '年' , A.FPERIOD '期',A.FID '期间内码',HSTX.FACCTSYSTEMID '会计核算体系内码',KJZC.FACCTPOLICYID '会计政策内码',HSZZ.FORGID '核算组织内码' FROM T_HS_OUTACCTG A INNER JOIN T_HS_CALDIMENSIONS B ON A.FDIMENSIONID =B.FDIMENSIONID INNER JOIN T_ORG_ACCOUNTSYSTEM_L HSTX ON B.FACCTSYSTEMID=HSTX.FACCTSYSTEMID and HSTX.FLOCALEID =2052 ---T_ORG_ACCOUNTSYSTEM_L 核算体系名称 INNER JOIN T_FA_ACCTPOLICY_L KJZC ON B.FACCTPOLICYID=KJZC.FACCTPOLICYID and KJZC.FLOCALEID =2052 --T_FA_ACCTPOLICY_L 会计政策名称 INNER JOIN T_ORG_ORGANIZATIONS_L HSZZ ON B.FFINORGID=HSZZ.FORGID and HSZZ.FLOCALEID =2052 ---T_ORG_ORGANIZATIONS_L 核算组织名称 WHERE A.FYEAR ='2022' AND A.FPERIOD BETWEEN '1' AND '5' and HSTX.FNAME ='财务会计核算体系' AND KJZC.FNAME='中国准则会计政策' AND HSZZ.FNAME='柴油机公司'
开始,存货收发存汇总表取数过程(详细过程见附件)
步骤1:按会计核算体系+核算组织+会计政策,获取物料的维度信息,后台表T_HS_INIVSTOCKDIMENSION
步骤2:从视图V_HS_INIVBALANCE_RPT获取期初数量和金额,单价=金额除以数量。
补充:V_HS_INIVBALANCE_RPT是8.1版本才加的视图,之前是用V_HS_INIVBALANCE。如果查不到V_HS_INIVBALANCE_RPT,就用V_HS_INIVBALANCE,结果是一样的。
SELECT FQTY,FAMOUNT,FDIMEENTRYID FROM V_HS_INIVBALANCE_RPT WHERE FENDINITKEY = '0' --注释:FENDINITKEY = '0'为期初,=1 为期末
步骤3:从视图V_HS_OUTINSTOCKSEQ获取收入数量、发出数量
SELECT FDIMEENTRYID , CASE WHEN FINOUTINDEX = '1' THEN FQTY ELSE 0 END FRECEIVEQTY, CASE WHEN FINOUTINDEX = '0' THEN FQTY ELSE 0 END FSENDQTY FROM V_HS_OUTINSTOCKSEQ 注释:FINOUTINDEX = '1' 为收入,= '0'为发出
步骤4:从视图V_HS_OUTINSTOCKSEQ 和 成本调整T_HS_AdjustmentBillEntry获取收入金额、发出金额。
步骤5:通过公式计算,结存数量=期初数量+收入数量-发出数量,结存金额=期初金额+收入金额-发出金额,结存单价=结存金额除以结存数量。
二、启用成本分表功能的情况
方法1、用接口查询
成本模块水平分表https://vip.kingdee.com/link/s/MeEVh,第四点
方法2、在数据库查询的方法
准备条件:查询拆分后的表名
参照没有启用成本分表功能的步骤,只需要将视图V_HS_INIVBALANCE_RPT和V_HS_OUTINSTOCKSEQ改成拆分后的表名(这两个视图对应的表分别是T_HS_INIVBALANCE和T_HS_OUTINSTOCKSEQ)。
补充:V_HS_INIVBALANCE_RPT是8.1版本才加的视图,之前是用V_HS_INIVBALANCE。如果查不到V_HS_INIVBALANCE_RPT,就用V_HS_INIVBALANCE,结果是一样的。
第1步:按会计核算体系+会计政策+核算组织+会计核算年度+核算期间 查到期间内码,比如查到某期的内码是100014
SELECT A.FID ,HSTX.FNAME '会计核算体系名称' , KJZC.FNAMe'会计政策名称' , HSZZ.FNAME '核算组织名称' , A.FYEAR '年' , A.FPERIOD '期',A.FID '期间内码',HSTX.FACCTSYSTEMID '会计核算体系内码',KJZC.FACCTPOLICYID '会计政策内码',HSZZ.FORGID '核算组织内码' FROM T_HS_OUTACCTG A INNER JOIN T_HS_CALDIMENSIONS B ON A.FDIMENSIONID =B.FDIMENSIONID INNER JOIN T_ORG_ACCOUNTSYSTEM_L HSTX ON B.FACCTSYSTEMID=HSTX.FACCTSYSTEMID and HSTX.FLOCALEID =2052 ---T_ORG_ACCOUNTSYSTEM_L 核算体系名称 INNER JOIN T_FA_ACCTPOLICY_L KJZC ON B.FACCTPOLICYID=KJZC.FACCTPOLICYID and KJZC.FLOCALEID =2052 --T_FA_ACCTPOLICY_L 会计政策名称 INNER JOIN T_ORG_ORGANIZATIONS_L HSZZ ON B.FFINORGID=HSZZ.FORGID and HSZZ.FLOCALEID =2052 ---T_ORG_ORGANIZATIONS_L 核算组织名称 WHERE A.FYEAR ='2022' AND A.FPERIOD BETWEEN '1' AND '5' and HSTX.FNAME ='财务会计核算体系' AND KJZC.FNAME='中国准则会计政策' AND HSZZ.FNAME='柴油机公司'
第2步:根据拆分前表名,找到拆分后表名,再加上步骤1的核算内码 ,组成完整的拆分后表名
SELECT FNUMBER 拆分后表名前缀,FSOURCETABLE 拆分前表名,* FROM T_HS_SPLITTABLE WHERE FSOURCETABLE = 'T_HS_OUTINSTOCKSEQ' SELECT FNUMBER 拆分后表名前缀,FSOURCETABLE 拆分前表名,* FROM T_HS_SPLITTABLE WHERE FSOURCETABLE = 'T_HS_INIVBALANCE'
1)比如拆分前表名T_HS_INIVBALANCE,拆分后就是T_HS_INIVBAL开头的表名,再根据前面查到期间内码FID=100014,则拆分后表名有两张T_HS_INIVBAL_100014_0、T_HS_INIVBAL_100014_1。
T_HS_INIVBAL_100014_0是FENDINITKEY=0的期初数据,即拆分后的某年期的库存维度余额表的期初数据
T_HS_INIVBAL_100014_1是FENDINITKEY=1的期末数据,即拆分后的某年期的库存维度余额表的期末数据
2)同理,拆分前的T_HS_OUTINSTOCKSEQ,对应拆分后的T_HS_STOCKSEQ_100014
开始,存货收发存汇总表取数过程(详细过程见附件)
步骤1:按会计核算体系+核算组织+会计政策,获取物料的维度信息,后台表T_HS_INIVSTOCKDIMENSION
步骤2:从以T_HS_INIVBAL开头,后缀带_0的表名,获取期初数量和金额,单价=金额除以数量
SELECT * FROM T_HS_INIVBAL_100014_0 注释:表名后缀带_0是期初,带_1是期末
步骤3:从T_HS_STOCKSEQ开头的表名,获取收入数量、发出数量
SELECT FDIMEENTRYID , CASE WHEN FINOUTINDEX = '1' THEN FQTY ELSE 0 END FRECEIVEQTY, CASE WHEN FINOUTINDEX = '0' THEN FQTY ELSE 0 END FSENDQTY FROM T_HS_STOCKSEQ_100014 注释:FINOUTINDEX = '1' 为收入,= '0'为发出。查询多个期间用UNION查询多个T_HS_STOCKSEQ开头的表
步骤4:从从T_HS_STOCKSEQ开头的表名 和 成本调整T_HS_AdjustmentBillEntry获取收入金额、发出金额。
步骤5:通过公式计算,结存数量=期初数量+收入数量-发出数量,结存金额=期初金额+收入金额-发出金额,结存单价=结存金额除以结存数量。
三、物料维度的关联关系
1.0、基础资料物料的物料维度页签的5个库存属性
仓库、仓位、BOM版本、批号、计划跟踪号,这个5个属性可以启用、影响出库成本。
启用某个库存属性意味着单据录入时需录入物料相关的对应的内容,获取单据相关维度信息时就会记录到T_HS_INIVSTOCKDIMENSION
勾选影响成本,就会记录到T_HS_STOCKDIMENSION,影响成本的意思是不同该属性的值属于不同的核算维度,需要分别核算,成本是可以不一致的,比如仓库不影响成本时,加权平均法的话,物料MAT1的A、B、C三个仓库库存维度会有三条记录分别记录该物料的维度,仓库分别为A、B、C,但核算维度只会有一条信息,仓库值为0,核算时会按照该一条维度信息把对应单据一起核算,出库成本都是一个价,如果仓库影响成本,核算维度就会有三条记录,核算会按照每一条维度信息把对应单据一起核算,三个维度的出库成本是可以不一样的。
1.1、库存维度表
T_HS_INIVSTOCKDIMENSION 内码FENTRYID ,记录实际业务发生的维度信息,和核算维度表存在多对一的关系,通过FDIMEENTRYID和核算维度表FENTRYID关联。
1.2、核算维度表
T_HS_STOCKDIMENSION 内码FENTRYID,记录影响成本的维度信息。
1.3、库存维度余额表
T_HS_INIVBALANCE(历史表T_HS_INIVBALANCE_H),FDIMEENTRYID和库存维度表内码关联,FACCTGDIMEENTRYID和核算维度表内码关联。库存维度余额表有库存维度、存货维度。
库存维度余额表记录了物料在库存维度的成本。
库存维度包括物料、货主类型、货主、、库存组织、仓库、仓位、批号、辅助属性、BOM版本、计划跟踪号、库存状态、项目编号(上方1.1表定义),即时库存和库存单据上都有这些信息。
成本信息包括物料的期初数量/金额、期末数量/金额、本期收入数量/金额、本期发出数量/金额,本年累计收入/发出的数量/金额。
期初期末标识FENDINITKEY,0是期初,1是期末。
1.4、核算维度余额表
T_HS_BALANCE(历史表T_HS_BALANCE_H),FDIMEENTRYID和核算维度表内码关联,与库存维度余额表有一对多的关系,按核算维度内码合并时,库存维度余额表合计后等于核算维度余额表。核算维度余额表只有核算维度。
期初期末标识FENDINITKEY,0是期初,1是期末。
期初行的数量FQTY 加上 期末行的本期收入数量FCURRENTINQTY 减去 本期发出数量FOUTSTOCKQTY 等于期末行的数量FQTY。金额也是如此。
1.5.1、出入库序列表
T_HS_OUTINSTOCKSEQ(历史表T_HS_OUTINSTOCKSEQ _H),所有参与核算的单据信息汇总,FDIMEENTRYID和库存维度表内码关联,FACCTGDIMEENTRYID和核算维度表内码关联。
出入库序列表可以理解为客户端的【核算单据查询】菜单,存货当前期间和历史期间的数据存在视图V_HS_OUTINSTOCKSEQ
1.5.2、出入库序列表与费用项目的关联
如果启用按费用项目明细核算,在【核算单据查询】点击“费用项目”可以看到各个费用项目的成本金额,各费用项目成本金额合计与核算单据查询的成本金额一样。
T_HS_OUTINSTOCKSEQ(历史表T_HS_OUTINSTOCKSEQ _H),与费用表T_HS_EXPENSES的关联如下:
SELECT * FROM T_HS_OUTINSTOCKSEQ A INNER JOIN T_HS_EXPENSES B ON A.FENTRYID =B.FSEQENTRYID
1.6、物料与核算组织的关联
可能存在多会计核算体系的情况,物料的同一张库存单据在多个会计核算体系里核算,所以需要按照 物料编码+会计核算体系+会计政策+核算组织 查询物料的核算维度、库存维度。
----------------------查询某个物料在会计核算体系+会计政策+核算组织下的核算维度、库存维度 -------T_HS_StockDimension.FENTRYID是核算维度内码,T_HS_INIVSTOCKDIMENSION.FENTRYID是库存维度内码。 SELECT HSTX.FNAME 会计核算体系,KJZC.FNAME 会计政策,HSZZ.FNAME 核算组织,MAT.FNUMBER 物料编码,MAT_L.FNAME 物料名称,HSWD .*,KCWD .* FROM T_HS_StockDimension HSWD LEFT JOIN T_HS_INIVSTOCKDIMENSION KCWD ON HSWD.FENTRYID =KCWD.FDIMEENTRYID INNER JOIN t_bd_Material MAT ON HSWD.FMASTERID = MAT.FMATERIALID --T_HS_StockDimension 核算维度, t_bd_Material 物料编码 LEFT OUTER JOIN t_bd_Material_l MAT_L ON ((MAT.FMATERIALID = MAT_L.FMATERIALID AND MAT.FUSEORGID = MAT_L.FUSEORGID) AND MAT_L.FLOCALEID = 2052) ---t_bd_Material_l 物料名称 INNER JOIN T_HS_ACCTGRANGE RAG ON HSWD.FACCTGRANGEID = RAG.FACCTGRANGEID ---T_HS_ACCTGRANGE 核算范围 LEFT OUTER JOIN t_BD_Stock STOCK ON STOCK.FSTOCKID = KCWD.FSTOCKID --t_BD_Stock 仓库 LEFT OUTER JOIN T_BD_LOTMASTER PH ON PH.FLOTID = KCWD.FLOT --T_BD_LOTMASTER 批号主档 INNER JOIN T_ORG_ACCOUNTSYSTEM_L HSTX ON RAG.FACCTGSYSTEMID=HSTX.FACCTSYSTEMID and HSTX.FLOCALEID =2052 ---T_ORG_ACCOUNTSYSTEM_L 核算体系名称 INNER JOIN T_FA_ACCTPOLICY_L KJZC ON RAG.FACCTPOLICYID=KJZC.FACCTPOLICYID and KJZC.FLOCALEID =2052 --T_FA_ACCTPOLICY_L 会计政策名称 INNER JOIN T_ORG_ORGANIZATIONS_L HSZZ ON RAG.FACCTGORGID=HSZZ.FORGID and HSZZ.FLOCALEID =2052 ---T_ORG_ORGANIZATIONS_L 核算组织名称 WHERE MAT.FNUMBER = N'物料编码' AND HSTX.FNAME ='会计核算体系名称' AND KJZC.FNAME='会计政策名称' AND HSZZ.FNAME='核算组织名称'
1.7、核算组织与期间的关联
存货成本是按会计核算体系+会计政策+核算组织+某年+期间核算,每期核算都会记录一个出库核算内码,就是出库核算表T_HS_OUTACCTG的FID字段。
---按会计核算体系+会计政策+核算组织+某年+期间核算查询核算内码 SELECT A.FID ,HSTX.FNAME '会计核算体系名称' , KJZC.FNAMe'会计政策名称' , HSZZ.FNAME '核算组织名称' , A.FYEAR '年' , A.FPERIOD '期' FROM T_HS_OUTACCTG A INNER JOIN T_HS_CALDIMENSIONS B ON A.FDIMENSIONID =B.FDIMENSIONID INNER JOIN T_ORG_ACCOUNTSYSTEM_L HSTX ON B.FACCTSYSTEMID=HSTX.FACCTSYSTEMID and HSTX.FLOCALEID =2052 ---T_ORG_ACCOUNTSYSTEM_L 核算体系名称 INNER JOIN T_FA_ACCTPOLICY_L KJZC ON B.FACCTPOLICYID=KJZC.FACCTPOLICYID and KJZC.FLOCALEID =2052 --T_FA_ACCTPOLICY_L 会计政策名称 INNER JOIN T_ORG_ORGANIZATIONS_L HSZZ ON B.FFINORGID=HSZZ.FORGID and HSZZ.FLOCALEID =2052 ---T_ORG_ORGANIZATIONS_L 核算组织名称 WHERE HSTX.FNAME ='会计核算体系名称' AND KJZC.FNAME='会计政策名称' AND HSZZ.FNAME='核算组织名称' AND A.FYEAR ='某年' AND A.FPERIOD ='某期'
存货收发存汇总表取数.rar(12.76KB)
推荐阅读