问题原因: |
由于库存总帐不正确造成的。 分析过程: 通过事件探察器,对盘点单和库存台帐分别进行跟踪,发现盘点单的数量取自库存总帐,台帐等帐表是从收发记录表取数,改写语句如下: --已经结帐最末月是6月,正常情况应该有imonth=1到imonth=7的数据,现在发现6月和7月的都有两条记录,共9条数据 select * from ST_TotalAccount where cwhcode='001'and cinvcode='1020001' order by imonth --收发记录主子表的数据源 select * from rdrecord join rdrecords on rdrecord.id=rdrecords.id where cvouchtype not in ('33','34') and ddate>= '2005-01-01' and cwhcode = '001' and cInvCode= '1020001' --经过如下的语句可以找到库存总帐的正常的数据: --当期发出数量 select sum(iquantity) from RdRecord INNER JOIN RdRecords ON RdRecord.ID = RdRecords.ID WHERE cvouchtype not in ('33','34') AND cWhCode='001' and cinvcode='1020001' AND RdRecord.dDate>='2005-7-01'and RdRecord.dDate<='2005-7-31' and brdflag=0 --当期收入数量 select sum(iquantity) from RdRecord INNER JOIN RdRecords ON RdRecord.ID = RdRecords.ID WHERE cvouchtype not in ('33','34') AND cWhCode='001' and cinvcode='1020001' AND RdRecord.dDate>='2005-7-01'and RdRecord.dDate<='2005-7-31' and brdflag=1 上述两条语句的ddate字段的范围分别取会计期间的时间范围(select * from ufsystem..ua_period )进行查询,找到正常的库存总帐表应该是类似于如下的,关于cinvcode=1020001的存货: imonth 期初 发出 收入 1 677 0 0 2 677 1230 1243 3 690 5936 6838 4 1592 5782 4076 5 1886 0 620 6 2506 2840 3130 7 2796 5952 12279 经过进一步分析,发现库存总帐不仅是这一个存货存在问题,而是所有存货都再6月和7月存在问题,如下语句可以查出: select cwhcode,cinvcode ,count(*) from ST_TotalAccount where imonth=7 and cbatch is null group by cwhcode,cinvcode having count(*)<>1 经过测试,进一步发现,如果在已经结帐的帐套中,在数据库中对GL_MEND表中的bflag_st直接从1(结帐状态)直接改为0(未结帐状态),再在库存的月末结帐中重新结帐,就会造成在库存总帐中出现重复会计月记录的现象,导致了总帐数目的错误。 |