[摘 要]本文通過對(duì)設(shè)計(jì)環(huán)境、批命令程序編制及執(zhí)行過程的描述,系統(tǒng)說明了怎樣在用友U8.70版本下,通過設(shè)計(jì)批命令,快速靈活地實(shí)現(xiàn)跨年多月調(diào)取不同層級(jí)會(huì)計(jì)科目的對(duì)應(yīng)數(shù)據(jù),以及對(duì)程序執(zhí)行效果有影響的相關(guān)注意事項(xiàng)。
[關(guān)鍵詞]設(shè)計(jì)環(huán)境;批命令;字段 注釋
doi:10.3969/j.issn.1673-0194.2009.16.005
[中圖分類號(hào)]F232[文獻(xiàn)標(biāo)識(shí)碼]A[文章編號(hào)]1673-0194(2009)16-0016-03
在用友財(cái)務(wù)系統(tǒng)中,當(dāng)涉及提取幾年數(shù)據(jù)或多個(gè)月份數(shù)據(jù)時(shí),無論是進(jìn)入系統(tǒng)逐期輸出數(shù)據(jù),還是在UFO表中定義公式取數(shù)都不是很容易處理。怎樣才能實(shí)現(xiàn)快速靈活地在不同賬套跨年多月取數(shù)呢?設(shè)計(jì)批命令是一個(gè)不錯(cuò)的選擇。
一、設(shè)計(jì)環(huán)境
(1)財(cái)務(wù)系統(tǒng)是用友U8.70版本。
(2)財(cái)務(wù)系統(tǒng)中會(huì)計(jì)科目編號(hào)中損益類編號(hào)第一位數(shù)是5,資產(chǎn)類編號(hào)第一位數(shù)是1, 成本類編號(hào)第一位數(shù)是4, 負(fù)債類編號(hào)第一位數(shù)是2, 權(quán)益類編號(hào)第一位數(shù)是3。
(3)編制名為“科目表”的Excel表格,建立KMB(見圖1)、 2005、 2006、 2007、2008(見圖2)5張報(bào)表(KMB是程序引用字段出處,后4張表中內(nèi)容是從006賬套中輸出的2005-2008每年的1~6級(jí)全部會(huì)計(jì)科目編碼及科目名稱,KMB中字段需要從后4張表中復(fù)制,直接輸入字段不能使用)。
(4)當(dāng)擬取不同賬套數(shù)時(shí),會(huì)計(jì)科目編碼及名稱應(yīng)從相應(yīng)賬套輸出,表中編碼從006賬套輸出,只能用于006賬套取數(shù)?!翱颇勘?XLS”保存路徑為C:\\\\ 科目表.XLS。
(5)批命令的設(shè)計(jì)取數(shù)年數(shù)為2005-2008年,可根據(jù)實(shí)際對(duì)程序及“科目表”字段進(jìn)行改變。
(6)批命令可在Excel中結(jié)合文本函數(shù)CONCATENATE()和查找替換命令編制,然后拷貝到UDEDIT中,非??旖荨*?/p>
二、程序設(shè)計(jì)
在用友U8.70財(cái)務(wù)系統(tǒng)UFO表中打開UFEDIT,輸入以下命令(//后是注釋):
LET PASSWORD=GETSTR(\"請(qǐng)輸入口令:\")
IF PASSWORD=\"000\"http://第一個(gè)IF語句,進(jìn)入口令
DESIGN//格式狀態(tài)
FREE ALL
INSERT G,30//在G列后插入30列,據(jù)實(shí)可調(diào)
INSERT #5,500
TYPE A1:A500, S//注意定義成字符格式,否則會(huì)出錯(cuò)
TYPE B1:B500, S
TYPE c1:AD3, S
TYPE C4:AD500,D//定義數(shù)字格式
DRAW A1:AD500,D
VAREA S,#4//定義行可變區(qū)
DATA//進(jìn)入數(shù)據(jù)狀態(tài)
LET ZTH=GETSTR(\"請(qǐng)輸入賬套號(hào)006或其他:\")//選取賬套,賬套對(duì)應(yīng)字段應(yīng)在科目表已定義
LET YEAR=GETINT(\"請(qǐng)選擇輸入年份2005-2008:\") //第二個(gè)IF語句,選擇年份
IF YEAR=2005
LET KMBMC=\"2005科目名稱\"
LET KMBBH=\"2005編號(hào)\"
ELSE
IF YEAR=2006
LET KMBMC=\"2006科目名稱\"
LET KMBBH=\"2006編號(hào)\"
ELSE
IF YEAR=2007
LET KMBMC=\"2007科目名稱\"
LET KMBBH=\"2007編號(hào)\"
ELSE
LET KMBMC=\"2008科目名稱\"
LET KMBBH=\"2008編號(hào)\"
END
END
END
LET A1=\"取數(shù)表\" //設(shè)計(jì)取數(shù)表,效果圖見圖3
LET A2=\"月份\"
LET A3=\"項(xiàng)目月份\"
LET B3=\"科目名稱\"
let c2=\"1\"
let d2=\"1\"
let e2=\"2\"
let f2=\"2\"
………//按順序在G2:X2中賦值3至11,表示月份,見圖3,此處略
let y2=\"12\"
let z2=\"12\"
let c3=\"數(shù)量\"
let d3=\"金額\"
…………//按順序在G2:X2中賦值”金額”、“數(shù)量”,效果見圖3,此處略
let y3=\"數(shù)量\"
let z3=\"金額\"
LET COL=2//將初始列定為2
LET ROW=4//將初始行定為4
LET HANGSHU=GETINT(\"請(qǐng)輸入取數(shù)行數(shù):\")
LET YUEFEN=GETINT(\"請(qǐng)輸入取數(shù)月數(shù)1至12:\")//確定需取數(shù)月份
WHILE ROW<(HANGSHU+4)//第一個(gè)WHILE語句,主要控制行標(biāo)
LET BIANN=ROW-3
LET !COL#ROW= INDB(\"C:\\\\科目表.xls\",\"KMB$\",KMBMC,BIANN,)//從科目表取科目名稱字段
LET !(COL-1)#ROW=INDB(\"C:\\\\科目表.xls\",\"KMB$\",KMBBH,BIANN,)//取編號(hào)字段
LET KMBH=TRIM(!(COL-1)#ROW )
LET YUE=4
WHILE YUE<(YUEFEN*2+4)//取數(shù)列變化
let y=val(!YUE#2)//取數(shù)月份變化
IF SUBSTR(KMBH,1,1)=\"5\"http://損益類發(fā)生數(shù),第三個(gè)IF語句
let !YUE#ROW=FS(KMBH,y,\"借\",ZTH,YEAR,,,) //方向?yàn)榻?,記賬后取數(shù)
let !(YUE-1)#ROW=sFS(KMBH,y,\"借\",ZTH,YEAR,,,)
ELSE
IF SUBSTR(KMBH,1,1)=\"1\" //資產(chǎn)類取期末數(shù),第4個(gè)IF語句
let !YUE#ROW=QM(KMBH,y,\"\",ZTH,YEAR,,,)//不填取數(shù)方向
let !(YUE-1)#ROW=SQM(KMBH,y,\"\",ZTH,YEAR,,,)
ELSE
IF SUBSTR(KMBH,1,1)=\"4\" //成本類取期末數(shù),第5個(gè)IF語句
let !YUE#ROW=QM(KMBH,y,\"\",ZTH,YEAR,,,)
let !(YUE-1)#ROW=SQM(KMBH,y,\"\",ZTH,YEAR,,,)
ELSE
let !YUE#ROW=QM(KMBH,y,\"\",ZTH,YEAR,,,)
let !(YUE-1)#ROW=SQM(KMBH,y,\"\",ZTH,YEAR,,,)
END //第5個(gè)IF結(jié)束
END//第4個(gè)IF結(jié)束
END //第3個(gè)IF結(jié)束
let YUE=YUE+2
END
LET ROW= ROW+1//行標(biāo)增加
END//第一個(gè)WHILE結(jié)束
DISPLAY\"取數(shù)成功!\"
LET BAOCHUN=GETSTR(\"是否保存表,是Y,否N:\")//保存表
IF BAOCHUN=\"Y\"
SAVE AS \"取數(shù)表\"
ELSE
BREAK
END
ELSE
DISPLAY\"密碼錯(cuò)誤!\"
BREAK
END//第一個(gè)IF語句結(jié)束
三、程序執(zhí)行
把此批命令保存名為“取數(shù)程序.SHL”,保存。
測(cè)試:在UFO中打開一個(gè)新報(bào)表,從執(zhí)行對(duì)話框中選中“取數(shù)程序.SHL”,輸入口令000,賬套006,年份2008,行數(shù)輸入1,即實(shí)現(xiàn)取數(shù)。