资产负债表取数不正确用友软件股份有限公司姓名刘维奇2010年10月19日----非数据问题客户问题:本月做资产负债表,某个科目的期末余额数值和总账中科目余额表不一致,右键联查该公式单元对应的明细账,发现明细账和科目余额表的数值一致,但和报表计算的结果不一致?测试环境:操作系统Windows2000数据库版本sqlserver2000sp4用友版本890按常规思路检查:报表表页没有锁定,重新计算问题依旧,删除公式,到数据状态中清除该单元格的金额,重新计算数值为0,重新设置公式,取数仍然不正确。详细检查公式:QM(“科目编码”,月,,,,“”,,,“y”,,)取未记账的数据,公式没有问题。查看总账中的科目余额表和科目明细账数据一致,且金额正确。请客户将凭证记账,再取数,此时发现问题:有凭证无法记账,查看凭证为修改过科目的辅助核算属性导致的有错凭证。是否此原因呢?建立科目进行测试。分析过程设置科目,不勾选辅助核算。测试过程填制凭证测试过程修改辅助科目属性,勾选部门核算。测试过程填制凭证,录入部门测试过程审核凭证,报错测试过程查看科目余额表测试过程使用qm函数设置报表公式,包含未记账凭证测试过程确认公式,计算报表,问题再现。测试过程右键联查明细账测试过程客户问题现象已经再现,那么ufo报表的取数逻辑是什么呢?事件探查器跟踪报表取数过程中的关键语句如下:Selectsum(GL_accvouch.md-GL_accvouch.mc)asSumValFROMcodeINNERJOINgl_accvouchONcode.ccode=gl_accvouch.ccodeWHERE(GL_accvouch.iflagisnull)andiperiod<>0andiperiod<13andGL_accvouch.ccode=N'1996'anddbill_date<=N'2010-02-28'继续分析此语句对code表和gl_accvouch连接取数,条件为当gl_accvouch表中的iflag字段为null,且iperiod(会计期间)大于0小于12,会计科目为xx科目,凭证日期小于等于该会计期间最后一天时,取该记录的借方减去贷方。Gl_accvouch表中的iflag字段为凭证标志,null为正常,1为作废,2为有错。继续分析总结:Ufo报表取未记账数据时,只统计凭证标志为null(正常)的凭证的数据。而总账模块中的科目余额表则不考虑凭证的标志。所以两个报表取数会不一致。解决方案:将凭证修改正确再取数即可。总结谢谢