QQ: 361473427
免责声明:
此文档旨在促进阅读者提高对金蝶软件的技术认知能力,阅读者可以根据文档中的技术参考意见进行自我学习。 金蝶软件(中国)公司不对本文档的有效性作出承诺,亦不对因本文档所产生的任何后果承担法律责任。
文档内容可能因产品的版本更新或技术的变更作出修改,欲浏览最新版本,请通过因特网访问金蝶软件(中国) 公司网站http://www.kingdee.com
如您是金蝶公司正式产品用户且需要技术支持,请与金蝶软件(中国)公司各分支机构或授权服务伙伴联系,联 系方式请浏览以上网站。
目 录
第一篇k3 系统原理及数据结构分析 .............................................................................................. 4
1、总账系统 ............................................................................................................................. 4
1.1 基础资料 ............................................................................................................... 4
1.1.1 科目 ................................................................................................................. 4 1.1.2 币别 ................................................................................................................. 5 1.1.3 凭证字 ........................................................................................................ 6 1.1.4 计量单位 .................................................................................................... 6 1.1.5 核算项目 .................................................................................................... 6 1.1.6 部门 ................................................................................................................. 7 1.1.7 职员 ................................................................................................................. 7 1.1.8 现金流量项目 ............................................................................................ 7 1.2 初始化 ..................................................................................................................... 7
1.2.1 初始化 ........................................................................................................ 7 1.2.2 试算平衡 .................................................................................................... 8 1.2.3 结束初始化 ................................................................................................ 8 1.3 凭证处理 ................................................................................................................. 9
1.3.1 多项目核算 ................................................................................................ 9 1.3.2 凭证过账 .................................................................................................. 10 1.3.3 凭证反过账 .............................................................................................. 11 1.4 现金流量 ............................................................................................................... 12
1.4.1 凭证录入与保存时有关现金流量的处理......................................................................... 12 1.4.2 现金流量表的平衡关系 .......................................................................... 12 1.5 往来处理 ............................................................................................................... 13
1.5.1 往来业务核销 .......................................................................................... 13 1.5.2 往来对账单 .............................................................................................. 13 1.5.3 账龄分析 .................................................................................................. 13 1.6 期末处理 ............................................................................................................... 14
1.6.1 期末调汇原理 .......................................................................................... 14 1.6.2 结转损益 .................................................................................................. 15 1.6.3 自动转账 .................................................................................................. 15 1.6.4 期末结账与反结账 .................................................................................. 16 1.7 账薄 ....................................................................................................................... 17
1.7.1 总账取数原理 .......................................................................................... 17 1.7.2 明细账取数原理 ...................................................................................... 17 1.7.3 科目余额表取数原理 .............................................................................. 17 1.7.4 核算项目分类总账取数原理 .................................................................. 18 1.7.5 核算项目明细账取数原理 ...................................................................... 18 1.7.6 核算项目余额取数原理 .......................................................................... 18 1.8 报表与总账对账 .................................................................................................... 19
帮 助顾客 成功 - 2 - k/3 总 账技术 支持手 册
1.8.1 资产负债表 .............................................................................................. 19 1.8.2 损益表 ...................................................................................................... 19
第二篇 典型案例分析................................................................................................................. 20
帮 助顾客 成功 - 3 - k/3 总 账技术 支持手 册
第一篇 k3 系统原理及数据结构分析
1、总账系统
1.1 基础资料
1.1.1 科目
涉及的表为 t_account(科目表),常用到的字段为 fitemid(科目内码),ffullname(科目全名),fquantity(是 否数量金额辅助核算), FmeasureUnitID(计量单位内码),fdetailid(核算项目内码)等等。 fitemid(科目内码):一个新增加的科目,在初始数据中录入数据,后来把此科目的数据删除了,或录入了 一张此科目的凭证,又把此凭证删除了,然后想把此新增科目删除;或者是结转新账套之后,想把一些没有余额 的科目删除。这时系统提示科目已有业务发生,不能删除。其实这涉及到很多数据库表引用了 t_account(科目 表)的 Fitemid 字段,这些表总账系统中有 t_balance(余额表),t_quantitybalance(数量余额表), t_voucherentry(凭证体表),t_profitandloss(损益科目实际发生额表);固定资产系统中有 t_faexpense(费 用分配表),t_fabalexpense(用于折旧计算的费用分配表),t_facard(固定资产卡片表),t_fabalcard(卡片 变动表);工业物流中有 t_icitem(物料明细资料表);商业物流中有 com_item(商品明细资料表)。只要在这些 表中存在记录,那么相对应的科目就不能在界面中删除。
Ffullname(科目全名):这个字段主要是在录入凭证,查看账薄时用到。如果在录入凭证,查看账薄时,系 统只显示科目的最明细一级的名称,那就是因为科目全名字段中的值不正确。这个问题有个相关的补丁可以解决, 补丁名叫 Repare_FullName.sql。 fquantity(是否数量金额辅助核算):此字段主要是标识此科目是否需要数量金额辅助核算,一般此字段与 FmeasureUnitID(计量单位内码)一起使用,当 fquantity 字段的值为 1 时,FmeasureUnitID 字段中一定也要 有相应的值,且此值与 t_measureunit 表中的 FmeasureUnitID 字段值相对应。 Fdetailid(核算项目内码):这个字段的值与 t_itemdetail(核算项目横表)中的 Fdetailid 字段值相关联, 且这个值在 t_itemdetail 表中对应的以 F 开头的字段的值为“-1”。例如:113(应收账款)科目,带部门及客 户两个核算项目,假设在 t_account 表中对应的 Fdetailid 字段的值为 1,那么在 t_itemdetail 表中,一定要 有 Fdetailid 值为 1 的记录,且 F1,F2 两个字段的值都为“-1”。详细讲解见凭证处理这节
科目表(t_account)如图 1 所示:
帮 助顾客 成功 - 4 - k/3 总 账技术 支持手 册
(图 1)
核算项目横表(t_itemdetail)如图 2 所示:
(图 2)
1.1.2 币别
涉及的表为 t_currency(币别表),常用到的字段为 FcurrencyID(币别内码),FfixRate(换算率),Fscale (小数位数)等等。
FcurrencyID(币别内码):系统默认账套记账本位的 FcurrencyID 值为 1。 Fscale(小数位数):在中间层账套管理中,有个地方设置本位币小数点位数,就是 FcurrencyID 值为 1 的
帮 助顾客 成功 - 5 - k/3 总 账技术 支持手 册
记录对应的 Fscale 值,可以在此改动币别对应的小数位数。 注意币别表中有一条默认的零记录,此记录不能丢失,如果丢失,会导致数据错误或在操作时出现莫名其妙
的错误(一般是在做凭证时不能保存,查询凭证,账表时数据不正确)。
1.1.3 凭证字
涉及的表为 t_vouchgroup(凭证字表),常用的字段为 FgroupID(凭证字内码),一般被 t_voucher(凭证表) 引用。
1.1.4 计量单位
涉及的表为 t_measureunit(计量单位表),t_unitgroup(计量单位组表),常用的字段为 Fmeasureunitid (计量单位内码),Funitgroupid(计量单位组内码),Fstandard(是否基本计量单位)。 计量单位表中有一条
默认的零记录,此记录不能丢失,如果丢失,会导致数据错误在操作时出现莫名其妙的 错误(一般是在做凭证时不能保存,查询凭证,账表时数据不正确)。 在一个计量单位组内,只能有一个基本计量
单位,即 Funitgroupid 字段值相同的记录,只能有一条记录的 Fstandard 字段值为 1。
1.1.5 核算项目
涉及的表为 t_item(核算项目表),t_itemclass(核算项目类别表),常用的字段为 Fitemid(核算项目内码), Fitemclassid(核算项目类别内码)。在 t_item 表中,按 Fitemclassid 字段的值,把核算项目分为很多类:1 为客户,2 为部门,3 为职员,4 为物料,5 为仓库,6 为备注,7 为计量单位,8 为供应商,9 为现金流量项目。。。, 如果是自定义的核算项目,一般 Fitemclassid 字段的值都比较大,在对应的 t_itemclass 表中,有一个 FsqlTableName 字段,它表示每个核算项目对应的详细情况表名称。
核算项目类别表(t_itemclass)如图 3 所示:
(图 3)
帮 助顾客 成功 - 6 - k/3 总 账技术 支持手 册
1.1.6 部门
涉及的表为 t_item(核算项目表),t_department(部门详细情况表), t_item 表中 fitemclassid 字段值为 “2”的所有记录,都是部门记录,在 t_department 表中记录的是最明细一级的部门信息,这两张表之间依靠 fitemid 字段相关联。
1.1.7 职员
涉及的表为 t_item(核算项目表), t_Emp(职员详细情况表),t_item 表中 fitemclassid 字段值为“3”的 所有记录,都是职员记录,在 t_emp 表中记录的是最明细一级的职员信息,这两张表之间依靠 fitemid 字段相关 联。
1.1.8 现金流量项目
涉及的表为 t_item(核算项目表),fitemclassid 字段值为“9”的所有记录,都是现金流量项目,在凭证录 入时,录入现金流量项目时,就是取此表的数据。
1.2 初始化
1.2.1 初始化
初始化时,涉及到的表主要是 t_balance(金额余额表),t_quantitybalance(数量余额表)和 t_profitandloss (损益类科目实际发生额情况表)。当在年初进行初始化时,余额表和数量余额表中都只有第一期的数据,且没 有本年累计数据和损益数据,即在两张余额表中,累计数字段的值为零和在损益类实际发生额表中没有记录。当 在年中进行初始化时,假如在第 6 期进行初始化,则在两张余额表中会存在第 1 期和第 6 期两期的数据,累计数 字段有数据,损益类实际发生额表中有记录。
在上面所讲的三张表中,都有币别(Fcurrencyid)这个字段,假如科目带有外币核算,且外币有余额或发生 额,则在这三张表中都由币别 ID 来识别,一个科目的余额之和是由这个科目的几个币种余额之和而得;在余额 表中币别字段(Fcurrencyid)的值为零,就表示是此科目的综合本位币记录。一个科目下所有币别余额之和等 于此科目币别字段为零值的记录的余额,所有币别发生额字段之和等于币别字段为零值的记录的发生额。 在上面所讲的三张表中,也都有核算项目(Fdetailid)这个字段,如果某个科目下挂核算项目,且核算项目 有余额或发生额,那么在这三张表中都由 Fdetailid 字段的值来反映。Fdetailid 字段的值为 0,则是此科目所 有核算项目之和的记录。(如图 4) 第一条记录 Fdetailid,Fcurrencyid 字段的值都为 0,表示这条记录是此科目所有币别所有核算项目之和的 记录,第二条记录 Fdetailid 字段值为 0,Fcurrencyid 字段值为 1,表示是所有币别为本位币的所有核算项目 的之和的记录,依次类推。
帮 助顾客 成功 - 7 - k/3 总 账技术 支持手 册
(图 4)
1.2.2 试算平衡
平衡的标准是:当前期间的综合本位币科目借方余额合计等于贷方余额合计,借方累计发生合计等于贷方累 计发生额合计,即汇总 t_Balance 表中 FcurrencyID=0 的启用期间数据。下面这段 SQL 语句是检查余额表中的余 额是否平衡:
select b.fdc,sum(a.fbeginbalance) from t_balance a join t_account b on a.faccountid=b.faccountid where a.fdetailid=0 and a.fcurrencyid=0 and b.fdetail=1 group by b.fdc
1.2.3 结束初始化
由于月末处理需要,结束初始化后,系统将自动更新表 t_Subsys(新增或更新一条记录),同时更新 t_SystemProfile 表中 Fcategory = GL, Fkey = InitClosed 对应的 Fvalue=1,初始化完成。
帮 助顾客 成功 - 8 - k/3 总 账技术 支持手 册
1.3 凭证处理
1.3.1 多项目核算 在讲凭证处理之前,先来讲一下多项目核算,即一个科目带一个核算项目或带多个核算项目时,数据是怎样 形成的。
① 多核算项目在科目中的应用 在基础资料维护中需要下设核算项目的科目中设置核算项目类别,科目下
设了核算项目类别将会在表
t_Account 中 FDetailID 有相应的代码 ,同时在 t_ItemDetailt 和 t_ItemDetailV 中有按 FdetailID 对应 的记录。例如:113(应收账寺)科目,带部门及客户两个核算项目,假设 FDetailID 的值为 1,那么在 t_ItemDeail 中有一条记录 FDetail = 1 ,FdetaiCount=2 (表示下设两个核算项目类别),F1= -1 ,F2 = -1, F3 = 0,F4=0,F8=0 等(以“F”开头 + “数字”的字段是根据 t_ItemClass 中核算项目类别代码 FitemClassID 的值得来的,1 和 2 在 t_ItemClass 中分别代表客户和部门,由于此科目下设核算项目类别为“客户” 和 “部门”,所以只有 F1,F2 字段的值是 –1,其他则为 0 表示在此类别不参与核算),可以参考图 1 和图 2。 在 t_ItemDetailV 中有对应 FdetailID = 1 的两条记录,FitemClassID 对应 t_ItemClass 表中 FitemClassID 的值,分别为 1 和 2 ,FitemID = -1(表示此类别参与核算)。
② 多核算项目在凭证中的应用
在录入凭证时科目下设核算项目则提示输入核算项目,输入核算项目后,在表 t_VoucherEntry 中 FDetailID 有相应的代码,在表 t_ItemDetailt 和 t_ItemDetailV 中有按 FdetailID 对应的记录,更新的 规则是在 t_ItemDetail 中“F”开头 + “数字”的字段值和 t_ItemDetailV 中 FitemID 字段值是录入的核 算项目对应表 t_Item 中 FitemID 的值。 例如:做一张收款凭证,借:银行存款,贷:应收账款(下挂客户和部门核算),客户为 A 客户,部门为 B 部门;在 t_Item 个表中,A 客户对应的 FitemID 的值假设为 20,B 部门对应的 FitemID 值为 30,那么, 在保存完这张凭证后,t_VoucherEntry 表中 FdetailID 的值假设为 4,在 t_ItemDetail 表中相对应有一条 FdetailID=4,FdetaiCount=2 的记录,其 F1=20,F2=30,其他以 F 开头的字段的值如 F3=0,F4=0,F8=0 等等,这里面的 F1 和 F2 的值就是 A 客户和 B 部门在 t_Item 表中对应的 FitemID 的值。在 t_ItemDetailV 有两条相应的记录,表现如下:FDetailID=4,FitemClassID=1,FitemID=20;FDetailID=4,FitemClassID=2, FitemID=30。
在录入模式凭证时,与录入凭证时一样,表 t_VoucherEntrytemplate 中 FDetailID 有相应的代码,在 t_ItemDetailt 和 t_ItemDetailV 表中都有相应的记录生成。
③ 核算项目横表和纵表: 核算项目横表为 t_ItemDetailt,核算项目纵表为 t_ItemDetailtV。核算项目纵表是由核算项目横表来 生成的,可以用 SP_CleanItemDetailV 这个存储过程来生成。系统一般是在查询一些账表时用到核算项目纵 表,比如查明细账,如果查出来的核算项目窜户,则可以运行 EXEC SP_CleanItemDetailV 来重新生成过核 算项目纵表,这样查明细账时数据就正常了。而有时也会出现核算项目横表丢失记录,而在核算项目纵表中 却保存完好,这时就可以写 SQL 语句从核算项目纵表中把丢失的记录插回核算项目横表中了。 多项目核算如图 5 所示:
帮 助顾客 成功 - 9 - k/3 总 账技术 支持手 册
(图 5)
1.3.2 凭证过账
在过账前,系统会检查总账是否已完成初始化、检查当前期间是否有未过账凭证,若未完成初始化或没有未
帮 助顾客 成功 册
- 10 -
k/3 总 账技术 支持手
过账凭证,则退出过账过程否则进入下一步。 凭证过账时,在选定的凭证范围内按照期间、凭证字、凭证号、分
录号的顺序逐条处理凭证分录: ① 检查凭证是否在本会计年度、期间。
② 根据账套选项的“凭证过账前必须审核”,检查凭证是否已经审核。 ③ 检查科目、核算项目的合法性。 ④ 检查凭证号是否连续。 ⑤ 将分录中的借或贷方发生额登记至 t_Balance,分三步完成:
A、登记科目的原币、原币折合本位币发生额。 B、登记核算项目的原币、原币折合本位币发生额。 C、若是非明细科目,则汇总其所有上级科目的发生数。
以 上 三 步 操 作 中 数 据 库 中 数 据 会 发 生 变 化 的 有 表 t_Balance 中 的
FdebitFor,FcreditFor,FytdDebitFor,
FytdCreditFor,FEndBalanceFor,FDebit,FCredit,FytdDebit,FYtdCredit,FendBalance 十个字段。
⑥ 检查是否机制损益类凭证,如是结转机制凭证(FinternalInd=“TransferPL”、“RateAdjust”),则不更 新余额表数据。 ⑦ 若科目属于损益类科目(t_Account 中 FGroupID 值大于 500),且凭证分录中的 FinternalInd 字段值为 “TransferPL”(自动结转),则将分录中的借或贷方发生额登记至表 t_ProfitAndLoss 中,分三步完成: A、 登记损益类科目的原币、原币折合本位币发生额。 B、登记核算项目的原币、原币折合本位币发生额。 C、若是非明细科目,则汇总其所有上级科目的发生数。
以 上 三 步 操 作 中 数 据 库 中 数 据 会 发 生 变 化 的 有 表 t_ProfitAndLoss 中 的 FamountFor, FytdAmountFor,Famount,FytdAmount 四个字段。 ⑧ 若科目或核算项目设有数量辅助核算,则更新表 t_QuantityBalance,发生变化的字段有 FDebitQty , FCreditQty ,FYtdDebitQty ,FytdCreditQty,FEndQty 五个字段。 ⑨ 表 t_Voucher 的对应字段 Fposted=1,FpostID=过账人,加上过账标记。
1.3.3 凭证反过账
① 检查本期有没有已过账的凭证,若没有,则退出反过账过程。 ② 更新 t_Balance 本期发生、本年累计及期末余额字段,使其数值去除当前反过账凭证的发生额: 如反过
账凭证分录为借方:
注以下:Vch.FamountFor、Vch.Famount、Vch.FQuantity 为凭证分录金额及数量 FDebitFor:= FdebitFor — Vch.FAmountFor
FYtdDebitFor= FytdDebitFor — Vch.FAmountFor
FEndBalanceFor= FBeginBalanceFor + DebitFor — CreditFor FDebit= Fdebit — Vch.FAmount
FYtdDebit= FytdDebit — Vch.FAmount
FEndBalance= FBeginBalance + Debit — Credit
③ 损益类科目更新 t_ProfitAndLoss 本期发生及本年累计字段:
FamountFor= FamountFor —Vch.FAmountFor
FytdAmountFor= FytdAmountFor — Vch.FAmountFor
帮 助顾客 成功 册 - 11 - k/3 总 账技术 支持手
Famount= Famount — Vch. FAmount
FytdAmount= FytdAmount — Vch.Famount
④ 更新 t_QuantityBalance 本期发生、本年累计及期末余额字段,使其恢复至期初状态: 如反过账凭证分
录为借方:
FdebitQty= FdebitQty — Vch.Fquantity
FytdDebitQty= FytdDebitQty — Vch.Fquantity FendQty= FbeginQty+DebitQty — CreditQty
⑤ 表 t_Voucher 的对应字段 Fposted=0,FpostID= -1 修改为未过账标记。
1.4 现金流量
1.4.1 凭证录入与保存时有关现金流量的处理
总账系统中的现金流量表最关键的表就是 t_CashFlowBal 和 t_VoucherEntry 这两张表,在做凭证时,如果 某条分录指定了现金流量项目,则在 t_CashFlowBal 表中插入一条记录,在 t_VoucherEntry 表中,现金类科目 的分录记录的 FcashFlowItem 字段的值为 1。t_CashFlowBal 表结构如下:
FvoucherID: 凭证内码(与 t_VoucherEntry 表中的 FvoucherID 相对应)
FentryID: 凭证分录号(与 t_VoucherEntry 表中的 FentryID 相对应) FcashAccountID: 现金流量科目内码(即凭证中对方科目的内码)
FitemID: 现金流量项目内码(与 t_Item 表中的 FitemID 相对应) FsubItemID: 现金流量附表项目内码 (与 t_Item 表中的 FitemID 相对应) FcurrencyID: 币别内码(与 t_VoucherEntry 表中的 FcurrencyID 相对应) FamountFor: 原币金额(与 t_VoucherEntry 表中的 FamountFor 相对应) Famount: 本位币金额(与 t_VoucherEntry 表中的 Famount 相对应)
当做凭证时,没有指定现金流量项目,而是通过 T 型账户来指定现金流量项目时,系统会把所有现金类科目 的凭证分录(整张凭证的分录)都提取到 t_CashFlowBal 表中;在没有指定流量项目和附表项目之前, t_CashFlowBal 表中的 FitemID 与 FsubItemID 字段的值分另为-1 和 0;当指定了流量表项目和附表项目时,则 更新 t_CashFlowBal 表中相应记录的 FitemID 和 FsubItemID 字段的值。
1.4.2 现金流量表的平衡关系
在 T 型账中,有一些对应关系:现金类科目的借贷发生额一定要相等,非现金类科目的借贷发生额不一定相 等;借方现金类科目与非现金类科目发生额合计等于过滤期间的总账的现金类科目的借方发生额,相应的贷方现 金类科目与非现金类科目发生额合计等于过滤期间的总账的现金类科目的贷方发生额。这是提取数据最关键的一 步,如果在这个地方数据就与总账不对,那么以下的对应关系就没有依据了。
满足上面的对应关系后,就是现金流量表本身的平衡关系了,第一、现金流量的净增加额与补充资料项目中 的现金及现金等价物的净增加额相等;第二、补充资料项目中的净利润与利表中的净利润数相等;第三、补充资 料项目中的净利润加上附表二的总数等于主表中经营活动产生的现金流量净发生额。
帮 助顾客 成功 册 - 12 -
k/3 总 账技术 支持手
1.5 往来处理
1.5.1 往来业务核销 涉及到的表:t_Voucher,t_VoucherEntry,t_TransCheckInfo,t_Account,t_Item,t_MeasureUnit,
t_VoucherGroup,t_Currency,T_AcctGroup,t_ItemDetailV,t_TransInitBalance。
① 进行往来业务核的前提条件是系统参数中设定“启用往来业务核销”,往来科目一定要设置“往来业务核
算”,所有的凭证全部都要过账。
② 以“应收账款”科目为例,系统先从 t_TransInitBalance,t_VoucherEntry 两个表中取出“应收账款” 初始化期间没有核销或没有核销完的数据和凭证表中“应收账款”科目借方发生的没有核销或没有核销 完的记录(与 t_TransCheckInfo 表相比较而得出没有核销或没有核销完的数据),再从 t_VoucherEntry 表中取出“应收账款”科目贷方发生的没有核销或没有核销完的记录(也是与 t_TransCheckInfo 表相比 较而得出没有核销或没有核销完的数据),分别列在上下两个窗口中。窗口上半部分是需要进行核销的记 录,下半部分是收款或是付款业务,如果是资产类科目,则借方行发生额在上面,贷方发生额在下面; 如果是负债类科目,则是贷方发生额在上面,借方发生额在下面。在此客户可进行自动或手工核销。 ③ 核销完后,系统会在 t_TransCheckInfo 表中记录核销的记录。
1.5.2 往来对账单 往来对账单是用来过滤查询某个往来科目的某个核算项目的借贷余数据情况
:
① 当过滤条件选择“全部”时,涉及的表有下面这些:t_Balance,t_Voucher,t_VoucherEntry,
t_ItemDetailV,t_Account ,系统先从 t_Balance 表中取出期初余额,再从 t_Voucher,t_VoucherEntry 两表中取出本期借贷方发生数据,最后计算得出余额。 ② 当过滤条件选择“未核销”时,涉及的表有下面这些:t_Balance,t_TransCheckInfo,
t_Voucher,t_VoucherEntry, t_ItemDetailV,t_Account ,系统先从 t_Balance,t_TransCheckInfo 两 表中取出期初余额,再从 t_Voucher,t_VoucherEntry 两表中取出本期借贷方发生数据,最后计算得出余 额。
1.5.3 账龄分析 账龄分析主要是用来对设置为往来核算科目的往来款项余额的时间分布进行分析,系统自动把设置往来的会
计科目的科目余额属性方向(如应收账款为借方)的最后一笔业务发生时间为账龄起算点,所有业务自动从凭证 中提取,自动出龄分析表。在账龄分析表中,系统只提供单核算的账龄分析表,不提供组合情况的账龄分析表。 目前系统的过滤项中的核算项目的选项实际上是无效的,把往来核算的科目下所设置的所有的核算项目都列示出 来。
涉及的表有下面这些:t_TransInitBalance,t_Balance,t_LastContactDate,t_VoucherEntry,t_Voucher, t_TransCheckInfo , t_itemdetail。 系统分别从 t_TransInitBalance , t_Balance , t_LastContactDate , t_VoucherEntry 这些表中取出期初,本期借方发生,本期贷方发生的数据与 t_TransCheckInfo 表中的核销数据 相减而得出未核销的数据,按时间的分布把这些数据分别归类到具体的时间中而形成账龄分析表。
帮 助顾客 成功 册 - 13 -
k/3 总 账技术 支持手
1.6 期末处理
1.6.1 期末调汇原理 系统执行此功能时,是根据在会计科目中的科目属性来进行的,只有在会计科目中设定为期末调汇的科目才
会进行期末调汇处理。 调汇原理:某个科目的期末原币乘以期末汇率是否与此科目调汇前余额表中的综合本位币
有差异,如果有差 异,就生成调汇凭证。 期末汇率:用户输入。调汇前余额表中的综合本位币:期初综合本位币(即上期期末调汇
后的余额)与本期 业务发生综合本位币之和。本期业务发生综合本位币:做凭证时原币乘以月初汇率或原币乘以业务发生日的汇率 就得出业务发生的综合本位币
调汇计算:
① 算出此科目在调汇前余额表中的期末综合本位币 A(一般都是把凭证过账即可) ② 算出原币余额乘以期末汇率得出期末综合本位币的余额 B,B 作为本期期末的综本位币余额,也是下 期期
初的综合本位币余额。 ③ 算出 B 与 A 的差 C(B-A),其中 C 即为要调汇所产生差异。把 C 记入汇兑损益,是正是负根据 C 的正负以
及科目的借贷方决定。例如对应收账款调汇,C 为正则记入应收账款正数(借方),记入汇兑损益科目贷 方正数。 涉及的表有下面这些:t_User,t_Voucher,t_VoucherEntry,t_VoucherGroup,t_Currency,t_Account, t_Systemprofile,t_RP_SystemProfile,t_Balance,t_RateAdjust,t_ItemDetailV,t_ItemClass,t_rp_Contact, t_RP_BillNumber,t_RP_ARPBill,t_RP_Contactbal。
处理步骤如下:
① 系统首先检查有没有未过账的凭证,如果有,则退出,没有则进行下一步,检查本期是否有调汇凭证,
有则退出,没有则进行下一步;
② 接着系统把期末汇率更新到 t_Currency 表中相应外币的汇率字段中,再取出汇兑损益科目,如果没有,
则要手工录入,并把此科目填入系统参数表中,以便下次能够使用;再接着取出生成汇兑损益凭证的凭 证字、凭证日期和摘要;
③ 系统从 t_Balance 表中取出科目的期末原币和期末本位币(调汇前的本位币),并计算期末原币*期末汇
率减去期末本位币(调汇前的本位币)而得到需要调整的差额,如果差额为零,则提示本期不需要调汇, 否则生成一张调汇凭证。
④ 从应收系统的 t_rp_Contact(往来业务列表)中取出期初客户(供应商)外币和本位币的未核销余额与
本期客户(供应商)的发生数据核销后剩余原币和本位币金额进行汇总,得出客户(供应商)的期末原 币和本位币余额,并计算期末原币*期末汇率减去期末本位币而得到需要调整的差额,然后生成一张调汇 的其他应收(付)单,这张单据的凭证内码指向第三步生成的调汇凭证内码,且这张单据的状态为完全
帮 助顾客 成功 册 - 14 - k/3 总 账技术 支持手
核销状态,(向 t_RP_ARPBill,t_rp_Contact 插入相应的记录),并更新应收应付余额(更新 t_RP_Contactbal 表中的数据)。
1.6.2 结转损益 此功能是将所有损益类科目的本期实际发生额全部自动转入本年利润科目,并可根据用户的需要生成收益凭
证与损失凭证。
损益类科目的实际发生额:损益类科目的实际发生额实际上就是该科目在期末结转损益之前的余额。 涉及的表有下面这些:t_User,t_Group,t_Systemprofile,t_Voucher,t_VoucherEntry,t_Account,t_AcctGroup, t_VoucherGroup,t_DataTypeInfo,t_Currency,t_MeasureUnit,t_UnitGroup,t_Balance,t_QuantityBalance, t_ItemDetailV,t_ItemClass 等。 处理步骤如下:
① 先检测系统参数(t_Systemprofile 表中 Fcategory=“GL”,Fkey=“EarnAccount”的记录)中有无本年
利润科目(Fvalue 的值),若无则退出;再检测系统中有无结转损益的凭证(t_Voucher 表中本期有无 FInternalInd='TransferPL'的记录),若有则提示是删还是过账结转损益的凭证,若是选过账,则系统 把结转损益的凭证过账,若是选删除,则把结转损益的凭证删除,再进入到下一步。
② 从科目表中把所有损益类科目列出(t_Account 表中 FgroupID>501 的记录),并更新科目表中损益类科 目对应本年利润科目(FearnAccountID 字段)的值为系统参数中设置的本年利润科目的科目 ID。
③ 从系统参数表(t_Systemprofile)中取出一系列的参数值,如果这些参数值没有错误,则再从余额表 (t_Balance)和数量余额表(t_QuantityBalance)取出所有最明细损益科目包括所有币别和核算项目 的期末余额(也即损益类科目实际发生额),另外再对照损益类科目设置的项目核算,分别从 t_Account、 t_ItemDetailV 和 t_ItemClass 表中进行验证科目对应的 FdetailID 值的正确性,若无错误,最后再往 t_Voucher,t_VoucherEntry 表中插入相应的记录。
1.6.3 自动转账 自动转账功能用于自动生成可按比例转出指定科目的“发生额”、“余额”、“最新发生额”、“最新余额”
等项数值的会计业务。 本位币金额公式:该条分录的科目必须为最明细科目,如明细科目下设了核算项目,还必
须输入核算项目代 码,在输入科目及核算项目后,还须录入币别。根据科目是否下设外币及数量,可以录入原币取数公式、本位币 取数公式、数量取数公式。公式的语法与自定义报表完全相同,通过取数公式可取到账上任意的数据。另外,在 公式中还可录入常数。(“本位币金额公式”即“数据来源公式”) 自动转账公式:其实就是 ACCT 函数,在这里没有取核算项目的地方,但是可以依照报表中 ACCT 函数的格式 来设置。比如取应收账款(113)科目下从客户 001 到客户 100 的本期期末余额的数据,公式可以这样来定义: ACCT(\"113|客户|001:100\。各个 ACCT 函数之间可以进行加减乘除的运算,也可以直接录入 一个常量来当做公式。
涉及的表主要有下面这些: t_Currency, t_AutoTransfer , t_AutoTransferEntry , t_SystemProfile , t_ItemDetailv, t_item , t_Account , t_ItemClass, t_Balance 等。 在做自动 转账时, 主 要是检 查 t_AutoTransferEntry 表中转账科目对应的核算项目是否正确,也即 t_AutoTransferEntry 表中 FaccountID 的 值在 t_Account 表是否存在,是否带核算项目,如果带核算项目,则 t_AutoTransferEntry 表中 FdetailID 字段
帮 助顾客 成功 册 - 15 -
k/3 总 账技术 支持手
的值对应的在 t_ItemDetailV 表中是否存在,其 FitemClassID 的值是否与科目所带的核算项目类别相匹配,如 果这些都检测通过,则接下来就是公式取数的事了。通过公式取到数之后,系统再检查按照转账凭证设置的借贷 方计算取到的数是否平衡,如果平衡,则生成转账凭证。
1.6.4 期末结账与反结账
① 期末结账:
涉及的表有下面这些:t_Account,t_AcctGroup,t_Balance,t_Currency,t_Department, t_Item, t_ItemClass,t_MeasureUnit,t_Organization,t_Personnel,t_ProfitAndLoss,t_QuantityBalance, t_RateAdjust,t_UnitGroup,t_Voucher,t_VoucherEntry,t_VoucherGroup,t_SystemProfile。 处理流程:
A> 检查是否完成初始化。
B> 检查本期是否还有未过账的凭证.
C> 如果需要-检查本期损益类科目余额是否结平,如果不平不能结账。 D> 检查 T-SubSys 表看是否其他要求与总账同步(Fperiodsynch=1)的子系统是否已经结账 E> 将 t_Balance、t_ProfitAndLoss、t_QuantityBalance 表中所有本期期末数据复制为下一期期初数
据,本年累计数据累计到下一期,发生额为 0。 F> 删 除 表 t_ItemDetail 、 t_ItemDetailV 中 一 些 在 t_Balance 、 t_ProfitAndLoss 、 t_QuantityBalance、t_VoucherEntry、 t_Account 中都不存在的核算项目多余数据。 G> 更新表 t_SystemProfile 当前期间加到下一期间 如果 Fperiod= PeriodPerYear 则更新
Fkey= CurrentYear ,Fvalue=Fvalue+1;
Fkey= CurrentPeriod,Fvalue=1
否则更新 Fkey= CurrentPeriod,Fvalue=Fvalue+1 H> 期末处理管理表 t_SubSYS 将本期数据设为已结账 Fcheckout=1,增加一条下一期 Fcheckout=0 的记
录。 ② 反结账:
涉及的表有下面这些:t_Account,t_AcctGroup,t_Balance,t_Currency,t_Department,t_Item, t_ItemClass, t_MeasureUnit,t_Organization,t_Personnel,t_ProfitAndLoss,t_QuantityBalance, t_RateAdjust,t_UnitGroup,t_Voucher,t_VoucherEntry,t_VoucherGroup,t_SystemProfile。 处理流程:
A> 删除表 t_Balance 中所有本期记录。 B> 删除表 t_ProfitAndLoss 中所有本期记录。 C> 删除表 t_QuantityBalance 中所有本期记录。 D> 期末处理管理表 t_SubSYS 删除当前期的记录,上期数据设为未结账 Fcheckout=0。
帮 助顾客 成功
册 - 16 - k/3 总 账技术 支持手
1.7 账薄
1.7.1 总账取数原理 涉及的表有下面这些:t_Group,t_User,t_SystemProfile,t_Balance,t_Account,t_Voucher,
t_VoucherEntry,t_Itemdetail,t_Item。当过滤条件中不选“包含本期未过账凭证”和“显示核算项目明细” 时,系统就是直接取 t_Balance 表中的数据;当过滤条件中选上“包含本期未过账凭证”时,系统还会从 t_Voucher, t_VoucherEntry 两表中取出借贷方未过账的数据进行汇总,再与 t_Balance 表中的借贷方本期全合计数相加, 而得出“包含本期未过账凭证”的本期发生合计数,再计算出余额;当过滤条件中选上“显示核算项目明细”时, 系统还会联接 t_Itemdetail,t_Item 两表,而得出科目所带核算项目的数据。
1.7.2 明细账取数原理
① 不包括核算项目时,涉及的表有:t_Group,t_user,t_systemprofile,t_account,t_currency,t_Voucher,
t_VoucherGroup,t_VoucherTplType,t_VoucherEntry,t_Settle,t_Balance。
系统先从 t_Balance 表中取出期初数,然后再从 t_Voucher,t_VoucherEntry 表中取出每笔明细发生数 据,最后再算出本期合计数、本年累计数和期末余额。
② 包括核算项目时,涉及的表有:t_Group,t_user,t_systemprofile,t_account,t_currency,t_Voucher,
t_VoucherGroup,t_VoucherTplType,t_VoucherEntry,t_Settle,t_Balance,t_Item,t_ItemDetailV。 系统先从 t_account,t_Balance,t_Voucher,t_VoucherEntry,t_Item,t_ItemDetailV 这几个表中取 出过滤条件中所选科目的核算项,再从 t_Balance 表中取出核算项目对应的期初余额,再从 t_Voucher, t_VoucherEntry 表中取出核算项目每笔明细发生数据,最后再算出本期合计数、本年累计数和期末余额。
1.7.3 科目余额表取数原理
① 不包括核算项目时,涉及的表有:t_Group,t_user,t_systemprofile,t_account,t_Balance,t_Voucher,
t_VoucherEntry。当过滤条件不选择包含未过账赁证时,系统主要是从 t_Balance 表中取数,不取核算 项目记录(即 FdetailID 值为 0),把 t_Balance 表中正数做为借方余额,负数做为贷方余额,并生成一 张临时表,这种取数使得最底下的借贷方合计数有可能与手工相加借贷方余额不等;当过滤条件选择包 含未过账赁证时,系统也是先从 t_Balance 表中取出数据生成一张临时表,再从 t_Voucher, t_VoucherEntry 表中取出本期未过账的数据,并依据这些数据更新临时表中的数据,使临时表中的数据 相当于过账后的余额数据,再从临时表中把数据取到科目余额表界面上。 ② 包括核算项目时,涉及的表有:t_Group,t_user,t_systemprofile,t_account,t_Balance,t_Voucher,
t_VoucherEntry,t_ItemDetail,t_Itemclass。与前面一样,系统先从 t_Balance 表中取出数据生成一 张临时表,再从 t_Voucher,t_VoucherEntry 表中取出本期未过账的数据,这时需要把核算项目的值也 取出来,并依据这些数据更新临时表中的数据,使临时表中的数据相当于过账后的余额数据,再从再从 临时表中把数据取到科目余额表界面上。
帮 助顾客 成功 册 - 17 - k/3 总 账技术 支持手
1.7.4 核算项目分类总账取数原理
涉及的表有下面这些:t_Group,t_User,t_SystemProfile,t_Balance,t_Account,t_Voucher,t_VoucherEntry, t_Itemdetail,t_Item。当过滤条件中不选“包含本期未过账凭证”时,系统就是直接取 t_Balance 表中的数据; 当过滤条件中选上“包含本期未过账凭证”时,系统还会从 t_Voucher,t_VoucherEntry 两表中取出借贷方未过 账的数据进行汇总,再与 t_Balance 表中的借贷方本期全合计数相加,而得出“包含本期未过账凭证”的本期发 生合计数,再计算出余额。
1.7.5 核算项目明细账取数原理 涉及的表有下面这些:t_Group,t_User,t_SystemProfile,t_Item,t_Account,t_UnitGroup,t_MeasureUnit,
t_Voucher,t_VoucherEntry,t_ItemDetailV,t_Balance,t_VoucherGroup。 查核算项目明细账时,要先确定
一个科目,再查此科目下挂的核算项目的数据,系统先从凭证表(t_Voucher, t_VoucherEntry)中汇总取出此科目下某一个核算项目未过账的借贷方数据,形成一个临时表;再从余额表 (t_Balance)联接(Union)刚才生成的临时表,取出此科目这个核算项目的期初余额,本期发生,本年累计, 期末余额等数据,形成核算项目明细账的期初余额;如果选择了“包含未过账凭证”,这时再从凭证表(t_Voucher, t_VoucherEntry)中逐条取出此科目这个核算项目的所有数据,如果没有选择“包含未过账凭证”,这时再从凭 证表(t_Voucher,t_VoucherEntry)中逐条取出此科目这个核算项目的过账的数据,形成核算项目明细账中的 发生额;最后系统根据期初余额,本期借贷方发生额,形成此科目这个核算项目的本期借贷方合计数,本年借贷 方累计数和期末余额。
1.7.6 核算项目余额取数原理 涉及的表有下面这些:t_Group,t_User,t_SystemProfile,t_Item,t_Account,t_Balance,t_ItemDetailV,
t_Voucher,t_VoucherEntry。 查询核算项目余额表时,要指定一个会计科目,当不选择“包括未过账凭证”时
,系统就是从余额表 (t_Balance)关联核算项目表(t_Item)、核算项目纵表(t_ItemDetailV)、科目表(t_Account)来按科目、 父级科目、核算项目来归类汇总,取得核算项目余额表的数据;再汇总前面得出的数据形成最后的合计数据。 当选择“包括未过账凭证”时,系统也是从余额表(t_Balance)关联核算项目表(t_Item)、核算项目纵表 (t_ItemDetailV)、科目表(t_Account)来按科目、父级科目、核算项目来归类汇总,得出科目余额表的数据, 再联接(Union)从凭证表(t_Voucher,t_VoucherEntry)关联核算项目表(t_Item)、核算项目纵表 (t_ItemDetailV)、科目表(t_Account)来按科目、核算项目进行归类汇总而得出未过账凭证的数据,形成核 算项目余额表的数据;再汇总前面两种情况的数据形成最后的合计数据。
帮 助顾客 成功 册 - 18 - k/3 总 账技术 支持手
1.8 报表与总账对账
1.8.1 资产负债表 在资产负债表做完后,重要的工作就是看资产与负债和所有者权益三者之间是否平衡,如果出现不平衡,这
时,应该从哪个方面去检查,这可以参考从以下几个方面去考滤:
① 首先考滤报表本身的各个项目是否都设置了取数公式,有小计合计这样的栏目的公式是否设计有误。 ② 再检查报表中的取数参数,是否有误。
③ 最后再检查各个项目的取数公式设置是否有误,一般的资产负债表取的都是各个科目的期初期末余额,
关键是对照总账中的科目余额表,一一检查各个项目对应科目的余额数据,看是否是取数科目设置为误 还是取数项目有误(如取期末余额时取成了期初余额或本期发生额)等。
经过上面的几步检查,一般就可以排除错误。 1.8.2 损益表
损益表的检查步骤与资产负债表是一样,只不过损益表的取数方式有两种情况,一种是取损益类科目的借方 或贷方发生额,一种是取损益类科目的实际发生额,如果取某个损益类科目数据取错了的话,应该先看看这个科 目是取哪种数据,如果是取损益类实际发生额的话,系统是取 t_ProfitAndLoss 表中对应科目的数据,可以到 t_ProfitAndLoss 表中查看这个科目的数据,与取出的数据是否相等,如果是取借方或贷方发生额的话,则对照 总账的科目余额表,看取出的数据是否与科目余额表中此科目的借方或贷方发生额一致。
帮 助顾客 成功 册 - 19 - k/3 总 账技术 支持手
第二篇 典型案例分析
案例一:在总账系统初始数据录入的时候,币别选择“美元”,录入原币以后打回车会出现错误提示,并且 数据不能保存。
分析:在录入初始数据时,系统会把最明细科目的数据逐级进行汇总,如果明细科目设置了外币核算,而其 上级科目却没有设置核算处币,则录入数据进行保存时,系统肯定会出错了。解决方法就是所上级科目都要设置 核算其所有下级明细科目所核算的币别,即所有外币即可。
案例二:有一账套从 K3V882 升到 931 以后,在录入凭证时只能显示最明细的会计科目,并不能显示全称; 在查明细账时也只是显示科目最明细的名称,而不能显示这个科目的全称。
分析:在录凭证和查询明细账时,都要用到科目(t_Account)这个表上的科目全名字段(FfullName),则查 看 t_Account 表 FfullName 字段的值,发现此字段的值全部都是科目最明细的名称,全名丢失,问题就在这里。 后来发现是丢失了科目全名触发器所导致的,解决方法是把科目全名的触发器给补上即可(有相关的补丁 SQL 语句)。
案例三:有一账套“原材料”科目下设二级明细科目核算,二级明细科目设置数量金额核算,在查“原材料” 二级明细科目的数量金额明细账时,出现“定义的应用程序或对象错误”,高级选项提示为“多步操作产生的错 误,请检查每一步的状态值”。 分析:查数量金额明细账时,涉及到的基础资料肯定少不了计量单位表(t_MeasureUnit),在查“原材料” 二级明细科目的明细账时,没有出现错误,证明此科目的科目表基础资料无误;那么就要查此科目对应的计量单 位表了,检查计量单位表(t_MeasureUnit)时,发现计量单位表(t_MeasureUnit)的名称字段(Fname)的值 有英文状态下的单引号,把它改成中文状态下的双引号后,查数量金额明细账正常。
帮 助顾客 成功 册 - 20 - k/3 总 账技术 支持手
案例四:有一账套在查询核算项目余额表(如应付账款科目),项目级次选择 4 级,在查询出的核算项目余 额表的最前面几条记录上出现单位名称为“**”的供应商,而且这些记录期末有数据。请问是什么原因造成的?
分析:查询核算项目余额表时,系统是要按照核算项目的级次分级进行汇总的,汇总的依据并不是按照核算 项目的代码来进行的,而是按照各个核算项目的父级代码来进行汇总的,如果核算项目对应的父级代码不正确, 系统就找不到汇总依据,则就会以“*”号来代替了,因此,出现这种情况只要查找核算项目的基础资料中的父 级代码是否正确,把不正确的父级代码改正确即可解决问题。
案例五:有一账套在总账系统在 2003 年第 1 期做初始化,已经录入完了所有科目的初始数据,在试算平衡 时系统提示是平衡的,但进行结束初始化时系统却提示余额不平衡。
分析:因为是年初做初始化,系统在进行试算平衡时,只是检查期初余额是否平衡,但在结束初始化时,系 统还需要检查累计发生数是否平衡,如果不平衡,系统也不充许结否初始化。结束初始化时与平衡检查时的 SQL 语句前面一段相同,只不过结束初始化时多了后面一段检查累计发生数的 SQL 语句。SQL 语句如下:
---------检查期初余额是否平衡
Select Fdc,SUM(FBeginBalanceFor) FBeginBalanceFor, SUM(FBeginBalance) FBeginBalance FROM t_balance bal,t_Account a
WHERE bal.FDetailID=0 AND a.FAccountID=bal.FAccountID and a.Flevel=1 And a.FGroupID<600
And FPeriod = 1 And FYear=2003 And bal.FCurrencyID = 0 Group By FDC order by FDC
--------检查累计发生数是否平衡
Select ISNULL(sum(FYtdDebitFor),0) FYtdDebitFor, ISNULL(sum(FYtdCreditFor),0) FYtdCreditFor,
ISNULL(sum(FYtdDebit),0) FYtdDebit, ISNULL(sum(FYtdCredit),0) FYtdCredit From t_balance bal,t_Account a
Where bal.FDetailID=0 AND a.faccountid=bal.faccountid and a.Flevel=1 and a.FGroupID<600
And FPeriod = 1 And FYear=2003 And bal.FCurrencyID = 0 此账套也正是客户自已手工录入了一些科目的累计发生数,但是累计发生数不平衡,从而产生了问题。也可 以用下面的 SQL 语句把累计发生数清除: update t_balance set fytddebitfor=0,fytdcreditfor=0,fytddebit=0,fytdcredit=0 where fytddebit<>0 or fytdcredit<>0
案例六:有一账套在初始化数据录入完后,软件初始化试算平衡相差 1.64 元,但经过反复核对每个科目的 数据,每个科目的数据都是正确的,是否是数据库中小数位问题导致的呢?
分析:在试算平衡时,系统核对的是科目余额表中的综合本位币的数据是否平衡,在科目余额表(t_balance) 中对应的就是每个科目的 FCurrencyID = 0 的记录数据,可以把上个案例中的试算平衡的 SQL 语句拿来执行一下, 正常情况下系统产生两条记录,这两条记录的数值都是一样的,系统才确定平衡;通过这两条记录一般可以看出 是借方数据不正确还是贷方数据不正确。既然反复核对过每个科目的数据,那么币别内码不等于零的记录的数据 应该没有问题,问题应该在于币别内码为零的记录中,此账套的问题在于借方币别内码等于零的记录中 FBeginBalanceFor 数据不等于 FBeginBalance 的数据。
现在的问题是怎样来找出是哪条记录的数据不正确,可用下面的 SQL 语句来查找:
select * from t_balance where fbeginbalancefor<>fbeginbalance and fcurrencyid=0 找到之后,直接把它们改为一致即可。
帮 助顾客 成功 册 - 21 -
k/3 总 账技术 支持手
案例七:有一账套以前月份数据都很正常,但是在本期凭证过账后,发现试算平衡表中的数据不平,而把凭 证反过账后,试算平衡表(包括未过账凭证)却是平的,不知是怎么回事?
分析:凭证未过账时,试算平衡表是平的,说明余额表中期初余额是正确的;凭证过账后,试算平衡表不平, 说明凭证过账后形成的余额表中发生额是不正确的。这时就得分析凭证过账的过程了,凭证过账时,系统需要按 科目级别逐级进行汇总,一般情况下,只要在凭证过账时不出现错误,最明细一级的科目的数据在余额表中都是 正确的,而在查询试算平衡表时,都是查一级科目的数据,那么问题就出在一级科目的余额数据有误了,也就是 凭证过账时汇总非明细科目的数据有误;系统在汇总数据时,依据的也是各个科目的父级代码,问题就出在有某 个或某些科目的父级代码不正确。
问题原因找出来了,但是怎样去查找出哪些科目的父级代码出错呢?这时我们可以通过科目余额表来查找, 先是查找出最明细科目的数据并按科目进行汇总,生成到一个临时表中,再查找出一级科目的数据,生成到另一 个临时表中,再对这两个临时表的数据进行比较,就可以查出哪些科目数据不对,也就是那些科目的父级代码不 正确。具体的 SQL 语句可参考如下:
------查找出最明细科目的数据并按科目进行汇,生成到临时表 aaa 中
select substring(b.fnumber,1,4) as fnumber,sum(a.fdebit) as fdebit,sum(a.fcredit) as fcredit into aaa
from t_balance a join t_account b on a.faccountid=b.faccountid
where a.fyear=2001 and a.fperiod=1 and a.fcurrencyid=0 and a.fdetailid=0 and b.fdetail=1 group by substring(b.fnumber,1,4)
--------查找出一级科目的数据,生成到临时表 bbb 中
select b.fnumber,sum(a.fdebit) as fdebit,sum(a.fcredit) as fcredit into bbb from t_balance a join t_account b on a.faccountid=b.faccountid
where a.fyear=2001 and a.fperiod=1 and a.fcurrencyid=0 and a.fdetailid=0 and b.flevel=1 group by b.fnumber
------对比两个临时表,找出哪些科目数据不正确
select * from aaa a join bbb b on a.fnumber=b.fnumber where a.fdebit<>b.fdebit or a.fcredit<>b.fcredit
----删除临时表 drop table aaa drop table bbb
案例八:有一账套,本期凭证过账后,查询总账数据与凭证不过账时查总账数据(包括未过账凭证)不相符。 分析:这又是一个凭证过账的问题,凭证在过账时,系统会把凭证上的科目,币别,核算项目等信息记录到 余额表中,在记录这些信息的时候,系统要核对这些信息在相应的基础资料中是否存在,如果凭证上的一些信息 不存在,则系统就不会把这些信息记录到余额表中,就会造成凭证过账后的数据与凭证过账前的数据在查询一些 账表时会产生不对。目前主要的问题是怎样来分析凭证上的哪些信息在基础资料中不存在,凭证上的会影响余额 表中
记录的信息有科目,币别和核算项目,如果凭证上的科目和币别在基础资料中不存在,系统在过账时会提示 出错,因此一般都是凭证核算项目丢失时,在过账时不会提示出错而又影响了余额表中的数据。
帮 助顾客 成功 册 - 22 -
k/3 总 账技术 支持手
要 知 道 哪 些 核 算 项 目 丢 失 了 , 首 先 要 清 楚 系 统 中 有 核 算 项 目 横 表 (t_ItemDetail) 和 核 算 项 目 纵 表 (t_ItemDetailV),一般以核算项目横表为主要目标,此表中的数据都是在做凭证或科目挂核算项目时自动生成 的,核算项目的丢失,主要就是核算项目横表中的数据丢失。要查核算项目横表中哪些核算项目记录丢失,可以 用下面的 SQL 语句来查询: -----与凭证比较查找丢失的核算项目
select distinct fdetailid from t_voucherentry where fdetailid not in (select fdetailid from t_itemdetail) order by fdetailid
----与余额表比较查找丢失的核算项目 select distinct fdetailid from t_balance where fdetailid not in (select fdetailid from t_itemdetail) order by fdetailid
如果这时查出了数据记录,则就是这些 FDetailID 值丢失了,每个 FDetailID 都对应了基础资表(t_Item) 中的 FItemID。查出了丢失的 FDetailID 后,该怎样把这些记录给补上呢?第一种方法就是查核算项目纵表 (t_ItemDetailV)中是否还存在这些丢失的 FDetailID(在很多情况下,纵表中都会存在这些记录),如果存在 的话,就可以根据纵表的信息把这些记录插回核算项目横表中了。第二种方法就只能是回到相应的凭证中,确定 此凭证的业务所对应的是哪些核算项目,然后在基础资料表中找到这些项目 FItemID 值,再把这些值插入核算项 目横表中。
核算项目数据丢失的问题在总账中有时比较普遍,一般都是账套升级时会产生如此情况,平时较少发生,但 是有一种情况,即核算项目横表中的零记录,有时会经常丢失,丢失零记录时,凭证过账后大部分的科目的余额 数据都会不正确,以后碰到此种情况即可查找是否是核算项目横表零记录丢失造成的。
案例九:有一账套在进行总账结账时,出现了问题,系统提示“本期损益类科目余额还没有结平,不能结账。” 再进行结转损益后,出现如下凭证:
借:321 本年利润
贷:521.05 管理费用-计提福利费/B003-织带部 1237.63(红字)
521.05 管理费用-计提福利费/B004-绣花部 1134.68(红字)
521.05 管理费用-计提福利费/B003-织带部 1237.63
521.05 管理费用-计提福利费/B004-绣花部 1134.68 查看有关明细账发现其其实是结平的,
将该凭证审核过账后,再进行结账,系统还是提示本期损益类科目余额没 结平。
分析:从上面生成的凭证可以看出,这是一个核算项目的问题,管理费用-计提福利费科目下面挂的是部门 的核算项目,先从 t_item 表中查找到 B003-织带部对应的 FItemID 值,假设为 100,再查找核算项目横表 (t_ItemDetail)中 F2 字段值为 100 的记录有多少。正确情况下,t_ItemDetail 表中的不同的 FDetailID 值在 FdetailCount 值相等的情况下对应的各字段的值是不能重复的,如果有重复的数据,则表示某个核算项目有重 复的数据了。此账套查出 t_ItemDetail 表中 F2=100 的记录在 FdetailCount 值相等的情况下出现了两条记录, 那就是这个核算项目的 FDetailID 值重复了;查询 B004-绣花部也是出现同样的情况。 这时该如何处理呢?肯定是要把其中重复的数据删除一个。可以这样来处理:先反结账到没有出错的期间, 假设重复的 FDetailID 值分别为 A 和 B,先找一下 FDetailID 值(A 和 B)在凭证中的状况,如果早期的凭证中 就存在其中一个 FDetailID 值,如 A 值,那么 B 值就是后为系统错误增加上的,那么就要把 B 值删除;在删除 B 值之前,先要把有 B 值的数据表的数据都改为 A 值,一般只要修改凭证即可,再把 B 值的记录从 t_ItemDetail 表中删除,再运行 EXEC CleanItemDetailV 存储过程,把核算项目纵表中的数据改正,重新进行过账,这样数 据即可正确。
案例十:总账系统中的现金流量表,在 T 型账户中非现金科目下的流量和附表中的流量全部都指定过了,但
帮 助顾客 成功 册 - 23 -
k/3 总 账技术 支持手
现金流量表做出来数字却是不对的,主表中经营活动产生的现金流量净额与附表中经营活动产生的现金流量净额 两个数字不相等,主表中现金及现金等价物的净增加额与附表中现金及现金等价物的净增加额两个数字不相等。
分析:碰到此种情况,先到总系统中查找一下是否存在多借多贷的现金类科目的凭证,在总账中的现金流量 表中,多借多贷的现金类科目的凭证在提取数据时系统提取不出,从而显示的数据都是错误的,大多数客户存在 此种问题。解决方法有下面几种:1、在做凭证时,手工指定多借多贷的现金类科目的凭证的现金流量项目;2、 把所有的多借多贷现金类科目凭证拆分成一借多贷或一贷多借的凭证。
排除这种情 况外,那么 就要从数据 着手了。首 先,在假设 系统提取的 凭证没有错 误的前提下 ,分析 t_FlowCashBal 表,系统提取的凭证数据全部都是放在此表中,在没有指定任何现金流量项目之前,所有的数据 都应该是平的,如果不平,则是 t_FlowCashBal 表的 FitemID 和 FsubItemID 字段的值不正常,可以先把它们清 除,再重新指定过应该就会数据平衡。
最后一种情况,就是提取过来的凭证是错误的,而这个错误来源于凭证数据中的对方科目,系统为什么不能 处理多借多贷的现金类科目的凭证就是因为系统不能判别每条记录的对方科目。
怎样来判定凭证中对方科目的数据是错误的呢,这就需要写很多的 SQL 语句来查找到,对于一借一贷的凭证, 借方记录的对方科目就是贷方记录的科目,反过来贷方记录的对方科目就是借方记录的科目;对于一借多贷的凭 证,借方记录的对方科目只能是贷方第一条记录的科目,;对于多借一贷的凭证,贷方对方科目只能是借方第一 条记录的科目;在此排除多借多贷的凭证。
帮 助顾客 成功 册 - 24 - k/3 总 账技术 支持手
因篇幅问题不能全部显示,请点此查看更多更全内容
怀疑对方AI换脸可以让对方摁鼻子 真人摁下去鼻子会变形
女子野生动物园下车狼悄悄靠近 后车司机按喇叭提醒
睡前玩8分钟手机身体兴奋1小时 还可能让你“变丑”
惊蛰为啥吃梨?倒春寒来不来就看惊蛰
男子高速犯困开智能驾驶出事故 60万刚买的奔驰严重损毁