
【摘要】針對(duì)在實(shí)驗(yàn)教學(xué)中常遇到一些用友客戶(hù)端無(wú)法解決的業(yè)務(wù)數(shù)據(jù)問(wèn)題,本文以總賬及其下級(jí)明細(xì)科目合計(jì)金額不一致的問(wèn)題為例,從用友后臺(tái)SQL數(shù)據(jù)庫(kù)方面對(duì)此做些分析,并提出解決問(wèn)題的方法。
【關(guān)鍵詞】用友ERP 財(cái)務(wù)軟件 SQL語(yǔ)言 實(shí)驗(yàn)教學(xué)
在用友會(huì)計(jì)電算化實(shí)驗(yàn)教學(xué)課中常遇到一些會(huì)計(jì)業(yè)務(wù)數(shù)據(jù)錯(cuò)誤的問(wèn)題,而有些問(wèn)題是無(wú)法通過(guò)用友的企業(yè)門(mén)戶(hù)或系統(tǒng)管理等客戶(hù)端來(lái)解決的,如我們?cè)趯?shí)驗(yàn)中較常遇到的總賬與其下級(jí)明細(xì)科目合計(jì)金額不一致就屬于此類(lèi)問(wèn)題。針對(duì)類(lèi)似的用友軟件數(shù)據(jù)出現(xiàn)的問(wèn)題,我們?cè)噺臄?shù)據(jù)庫(kù)方面來(lái)分析該問(wèn)題產(chǎn)生的原因并提出解決的方法。
一、余額數(shù)據(jù)出現(xiàn)不一致的問(wèn)題
我院會(huì)計(jì)電算化實(shí)驗(yàn)教學(xué)軟件使用的是用友U8.61網(wǎng)絡(luò)版,即是在專(zhuān)門(mén)的服務(wù)器上為每個(gè)學(xué)生建立一個(gè)獨(dú)立的賬套,學(xué)生通過(guò)client/Serve的模式從企業(yè)門(mén)戶(hù)登錄用友服務(wù)器上分配給自己的賬套,獨(dú)立完成會(huì)計(jì)電算化總賬和報(bào)表模塊的實(shí)驗(yàn)操作。在期初余額錄入時(shí)學(xué)生較常遇到總賬一級(jí)科目與其明細(xì)科目合計(jì)金額不一致的問(wèn)題,以材料采購(gòu)(1401)為例,它的一級(jí)科目、明細(xì)科目及科目的余額如圖1所示:
從圖2可以看出,一級(jí)科目材料采購(gòu)的金額為49 255,是由A材料、B材料、C材料、燃料、其他材料和低值易耗品六個(gè)二級(jí)(下級(jí))明細(xì)科目金額的總和構(gòu)成。正常情況下,材料采購(gòu)一級(jí)科目的金額和它的下級(jí)明細(xì)科目金額的總和兩者應(yīng)該是一致的,但在實(shí)際中卻經(jīng)常出現(xiàn)兩者金額不一致的現(xiàn)象,這種現(xiàn)象主要有兩種情況:①材料采購(gòu)一級(jí)科目的金額小于其下級(jí)明細(xì)科目金額的總和。此時(shí)如果刪除其全部下級(jí)科目的金額,會(huì)發(fā)現(xiàn)材料采購(gòu)一級(jí)科目的金額為負(fù)數(shù)。以圖2為例,當(dāng)刪除其全部下級(jí)科目的期初余額時(shí),此時(shí)材料采購(gòu)金額本應(yīng)該為零,但其卻顯示為-3 000。②材料采購(gòu)一級(jí)科目的金額遠(yuǎn)大于其下級(jí)明細(xì)科目金額的總和,甚至達(dá)到兩倍,即在圖2中材料采購(gòu)金額本應(yīng)為49 255,卻顯示為98 510。
手工會(huì)計(jì)操作中采用平行登記法記賬,即是凡涉及明細(xì)賬戶(hù)的同一筆經(jīng)濟(jì)業(yè)務(wù)要在總分類(lèi)賬戶(hù)和其所屬明細(xì)分類(lèi)賬戶(hù)中按同時(shí)、同向、同金額的方法進(jìn)行登記,月末再將總分類(lèi)賬和明細(xì)賬兩者的金額進(jìn)行核對(duì),一般不容易出錯(cuò)。而在會(huì)計(jì)電算化的操作中,無(wú)論是期初余額還是憑證的錄入,錄入的金額都是直接錄入到末級(jí)科目下,一級(jí)及非末級(jí)科目是無(wú)需錄入數(shù)據(jù)的(用友期初余額錄入界面,一級(jí)和非末級(jí)的科目余額輸入欄為灰色,呈不可錄狀態(tài)),總賬(一級(jí))科目的金額是由系統(tǒng)根據(jù)其下級(jí)明細(xì)科目的金額自動(dòng)計(jì)算得出,所以發(fā)生兩者金額不一致的現(xiàn)象,我們可以判斷是軟件或系統(tǒng)的問(wèn)題,而非人為的錯(cuò)誤操作所致。
另外,由于一級(jí)科目有數(shù)據(jù)(負(fù)金額),如按通常處理錯(cuò)誤的方法——通過(guò)刪除材料采購(gòu)一級(jí)及其明細(xì)科目的金額和科目再重建的方法是行不通的。余額不一致不僅僅影響了材料采購(gòu)單個(gè)科目和資產(chǎn)賬戶(hù),而且還影響到期末余額發(fā)生表、資產(chǎn)負(fù)債表等報(bào)表數(shù)據(jù),并導(dǎo)致試算不平衡,從而無(wú)法記賬和結(jié)賬。一個(gè)小錯(cuò)誤影響了全局,而用戶(hù)明知錯(cuò)誤所在,又因無(wú)法修改而束手無(wú)策。
二、問(wèn)題產(chǎn)生的原因分析及糾錯(cuò)
發(fā)生余額不一致問(wèn)題后,以往的解決辦法只能是將此賬作廢并重建賬套、重新進(jìn)行基礎(chǔ)資料的設(shè)置等初始化工作,由此增加了工作量且令人沮喪,尤其是在電算化會(huì)計(jì)考試中,出現(xiàn)這種情況會(huì)嚴(yán)重地影響考試。因此找出問(wèn)題發(fā)生的原因和快速的解決方法是非常必要的。針對(duì)這種情況,我們?cè)噺挠糜押笈_(tái)SQL數(shù)據(jù)庫(kù)方面分析查找出現(xiàn)這種余額不一致的原因。用友財(cái)務(wù)軟件采用客戶(hù)/服務(wù)器模式,當(dāng)用戶(hù)使用系統(tǒng)管理程序建立賬套時(shí),會(huì)在服務(wù)器的SQL數(shù)據(jù)庫(kù)中建立一個(gè)應(yīng)用數(shù)據(jù)庫(kù),其命名規(guī)則是ufdata_賬套號(hào)_年度,用于儲(chǔ)存各年度的賬務(wù)數(shù)據(jù)。假定要建立一個(gè)賬套號(hào)為001、會(huì)計(jì)期間為2010的賬套,則會(huì)在后臺(tái)SQL數(shù)據(jù)庫(kù)建立一個(gè)ufdata_001_2010的數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)中儲(chǔ)存有各種數(shù)據(jù)表,我們?cè)噺钠湎嚓P(guān)的數(shù)據(jù)表中來(lái)查找問(wèn)題的原因。
1. 材料采購(gòu)總賬科目金額少于其下級(jí)明細(xì)科目金額的總和。在期初余額錄入中刪除其全部下級(jí)科目的金額,會(huì)發(fā)現(xiàn)一級(jí)科目材料采購(gòu)的金額出現(xiàn)-3 000,如圖3所示:
在ufdata_001_2010數(shù)據(jù)庫(kù)中的gl_accsum表為科目期初余額數(shù)據(jù)表,錄入期初余額后,各會(huì)計(jì)科目含總賬和明細(xì)科目的各會(huì)計(jì)期間發(fā)生的金額數(shù)據(jù)儲(chǔ)存在本表中。圖4為在SQL查詢(xún)分析器中使用SQL語(yǔ)言查詢(xún)gl_accsum表十二月份的材料采購(gòu)科目的期初余額數(shù)據(jù)。數(shù)據(jù)庫(kù)中g(shù)l_accsum表中的科目數(shù)據(jù)與用友軟件企業(yè)門(mén)戶(hù)的期初余額錄入界面的數(shù)據(jù)是一致的。圖4(材料采購(gòu)科目)為當(dāng)出現(xiàn)負(fù)數(shù)現(xiàn)象時(shí)使用SQL語(yǔ)句查詢(xún)gl_accsum表的查詢(xún)結(jié)果。從圖4記錄1可以看出,1401材料采購(gòu)的數(shù)據(jù)有錯(cuò)誤,cbegind_c字段值應(yīng)為平,me字段不應(yīng)有金額。出現(xiàn)這種情況的原因可能是:當(dāng)用戶(hù)錄入期初余額時(shí),或因系統(tǒng)資源負(fù)載(網(wǎng)絡(luò)版、多賬套接入),或系網(wǎng)絡(luò)方面的原因造成SQL數(shù)據(jù)庫(kù)的Transact-SQL事務(wù)回滾而產(chǎn)生的錯(cuò)誤。解決問(wèn)題的方法只需在gl_accsum表中刪除或修改1401記錄,便可解決該問(wèn)題。
2. 總賬(一級(jí))科目的金額是其下級(jí)明細(xì)科目金額總和的兩倍。ufdata_001_2010數(shù)據(jù)庫(kù)中code表為儲(chǔ)存會(huì)計(jì)科目的數(shù)據(jù)表,表中記錄了會(huì)計(jì)科目名稱(chēng)、科目編碼、賬戶(hù)類(lèi)型和借貸方向等屬性(見(jiàn)圖1)。在code表中bend字段是邏輯數(shù)據(jù)類(lèi)型,值為0或1,當(dāng)bend字段值為1時(shí),說(shuō)明該會(huì)計(jì)科目是末級(jí)科目;當(dāng)bend字段值為0時(shí),則其為非末級(jí)科目——父級(jí)或一級(jí)科目。如圖1中1401和140106為非末級(jí)科目,所以其bend字段值為0,其他末級(jí)科目bend字段值為1。出現(xiàn)兩倍的現(xiàn)象是因?yàn)椋阂患?jí)科目記錄其bend字段值應(yīng)為0,但因系統(tǒng)的錯(cuò)誤而變成1,因此系統(tǒng)把一級(jí)或父級(jí)科目錯(cuò)誤地當(dāng)成末級(jí)科目,從而再次重復(fù)計(jì)算其金額。如材料采購(gòu)的bend字段值應(yīng)為0,但因系統(tǒng)的錯(cuò)誤變?yōu)?,按正常情況1401的金額是49 255,但因系統(tǒng)誤認(rèn)為材料采購(gòu)1401是末級(jí)科目,其金額49 255再次參與計(jì)算,即材料采購(gòu)科目的金額98 510為正確金額的兩倍。糾正錯(cuò)誤的方法只需把bend字段值1改為0,即讓系統(tǒng)確認(rèn)材料采購(gòu)為一級(jí)科目,使其金額不再參與計(jì)算。
三、基于SQL語(yǔ)言的解決方法
用友軟件采用的是MS SQL Server關(guān)系型數(shù)據(jù)庫(kù),運(yùn)用SQL(結(jié)構(gòu)查詢(xún)語(yǔ)言)可實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的查詢(xún)、修改或刪除等。通過(guò)分析用友賬套所屬的數(shù)據(jù)庫(kù)和表結(jié)構(gòu),并明了金額產(chǎn)生不一致的原因后,我們只需采用SQL語(yǔ)言就可以直接修改或刪除數(shù)據(jù)庫(kù)中因系統(tǒng)出現(xiàn)的錯(cuò)誤記錄。
使用SQL語(yǔ)言修改或刪除數(shù)據(jù),之前必須先建立與數(shù)據(jù)庫(kù)的連接。連接數(shù)據(jù)庫(kù)的方法可以在服務(wù)器或已安裝SQL2005數(shù)據(jù)庫(kù)客戶(hù)端的計(jì)算機(jī)上使用SQL查詢(xún)分析器,它是一個(gè)界面友好的圖形工具,能為編寫(xiě)、執(zhí)行SQL語(yǔ)句提供一種交互式環(huán)境并返回執(zhí)行結(jié)果。另一種方法是在DOS提示符下使用sqlcmd實(shí)用工具,登錄SQL服務(wù)器執(zhí)行Transact-SQL語(yǔ)句,來(lái)實(shí)現(xiàn)數(shù)據(jù)的修改。
本實(shí)例是采用sqlcmd工具執(zhí)行SQL命令來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)數(shù)據(jù)的修改,具體命令及注釋如下:
1. 登錄SQL數(shù)據(jù)庫(kù)并打開(kāi)賬套所屬數(shù)據(jù)庫(kù)。
Sqlcmd-S uf-U sa/∗用sa用戶(hù)登錄SQL數(shù)據(jù)庫(kù)名為UF的服務(wù)器,輸入密碼后登錄∗/
Use ufdata_001_2010/∗打開(kāi)賬套001出錯(cuò)的數(shù)據(jù)庫(kù)∗/
Go/∗ go為SQL語(yǔ)句的結(jié)束并執(zhí)行語(yǔ)句命令,下面省去∗/。
2. 對(duì)于總賬科目的金額小于其下級(jí)明細(xì)科目金額的總和的修改方法,可以直接使用delete命令刪除gl_accsum數(shù)據(jù)表中出錯(cuò)的總賬及其下級(jí)所有的明細(xì)科目數(shù)據(jù),然后在期初余額錄入重新錄入。
Delete gl_accsum where ccode like 1401%
/∗刪除gl_accsum表中科目代碼為1401的總賬及其下級(jí)所有的明細(xì)科目數(shù)據(jù)記錄,其中1401%中的%號(hào)為通配符,即刪除條件為一級(jí)科目1401下的所有下級(jí)明細(xì)科目記錄∗/。
3. 總賬科目的金額是其下級(jí)明細(xì)科目金額總和的兩倍,其原因是在code數(shù)據(jù)表中一級(jí)或父級(jí)科目的bend字段值因系統(tǒng)錯(cuò)誤設(shè)為1,只需用update命令把值1更改為0即可:
Update code set bend=0 where ccode=1401
在用友軟件應(yīng)用中,經(jīng)常遇到諸如余額不一致等情形無(wú)法通過(guò)用友程序來(lái)解決的問(wèn)題,在了解用友賬套的數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上,我們可從其后臺(tái)數(shù)據(jù)庫(kù)分析入手,嘗試采用SQL語(yǔ)言來(lái)直接有效地解決類(lèi)似的數(shù)據(jù)問(wèn)題。
主要參考文獻(xiàn)
1. 何日勝.會(huì)計(jì)電算化系統(tǒng)應(yīng)用操作(第四版).北京:清華大學(xué)出版社,2011
2. Dejan Sunderic著.熊桂喜譯.SQL Server 2000高級(jí)編程技術(shù).北京:清華大學(xué)出版社,2002
3. 袁鵬飛.中文版SQL Server 2000數(shù)據(jù)庫(kù)系統(tǒng)管理.北京:人民郵電出版社,2001
【作 者】
胡志宙
【作者單位】
(嘉應(yīng)學(xué)院經(jīng)濟(jì)與管理學(xué)院 廣東梅州 514015)