[摘 要] 本文探討了以Excel的多頁(yè)二維表格為載體,使用XML存儲(chǔ)指令,delphi的prExpr作為表達(dá)式的計(jì)算和判斷,實(shí)現(xiàn)了一個(gè)通用的、靈活、可擴(kuò)展的工資標(biāo)準(zhǔn)系統(tǒng)。
[關(guān)鍵詞] 工資標(biāo)準(zhǔn);Excel;XML
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2010. 05 . 003
[中圖分類號(hào)]F232 [文獻(xiàn)標(biāo)識(shí)碼]A [文章編號(hào)]1673 - 0194(2010)05 - 0006 - 02
1 前 言
在人力資源管理的薪資體系中,核心任務(wù)之一是確立工資標(biāo)準(zhǔn),即根據(jù)各種要素和條件,比如員工所在的部門、崗位,工作年限、業(yè)績(jī)情況等,確定其所應(yīng)有的薪酬水平。員工從試用期到轉(zhuǎn)正,從部門變動(dòng)到崗位變動(dòng),從正常工資晉升到各種獎(jiǎng)金的確定,再到稅金、四金的計(jì)算,都是依據(jù)工資標(biāo)準(zhǔn)計(jì)算得來(lái)。一般來(lái)說(shuō),一套完整的工資標(biāo)準(zhǔn)是由一個(gè)或者多個(gè)工資標(biāo)準(zhǔn)表構(gòu)成的,這些工資標(biāo)準(zhǔn)表定義了條件和對(duì)應(yīng)的工資數(shù)值或者計(jì)算公式。
實(shí)現(xiàn)工資標(biāo)準(zhǔn)表存儲(chǔ)、工資數(shù)據(jù)套取功能的系統(tǒng),我們稱為工資標(biāo)準(zhǔn)系統(tǒng),常見(jiàn)的實(shí)現(xiàn)方法是把工資標(biāo)準(zhǔn)表的條件、數(shù)據(jù)分解,保存在數(shù)據(jù)庫(kù)中,套取的時(shí)候,按照這些條件和數(shù)據(jù),對(duì)數(shù)據(jù)表的相關(guān)字段進(jìn)行更新、賦值。這種方法需要精心設(shè)計(jì)數(shù)據(jù)庫(kù)結(jié)構(gòu),提供維護(hù)界面,維護(hù)過(guò)程相對(duì)比較復(fù)雜。
近年來(lái),筆者參與了上海市機(jī)關(guān)、事業(yè)單位工資套取、工資調(diào)整、正常晉升及離退休人員的工資套取等系統(tǒng)的設(shè)計(jì)和研發(fā),對(duì)工資標(biāo)準(zhǔn)表的特點(diǎn)進(jìn)行了分析,使用Excel和XML,以Delphi為開(kāi)發(fā)工具,實(shí)現(xiàn)了一個(gè)通用工資標(biāo)準(zhǔn)系統(tǒng),順利地完成了上海市范圍內(nèi)的機(jī)關(guān)、事業(yè)單位人員工資套改及后續(xù)的工資調(diào)整任務(wù),并應(yīng)用在上海部分高校的工資管理及發(fā)放系統(tǒng)中,取得了很好的效果。
2工資標(biāo)準(zhǔn)表的特點(diǎn)
分析研究上海市機(jī)關(guān)、事業(yè)單位在工資套改、調(diào)整中用到的工資標(biāo)準(zhǔn)表,并參考部分企業(yè)單位的工資標(biāo)準(zhǔn)表,可以發(fā)現(xiàn)它們具有以下特點(diǎn):
(1)根據(jù)每個(gè)員工不同的條件,比如職級(jí)、崗位、學(xué)歷的不同,進(jìn)行不同工資標(biāo)準(zhǔn)的套取。條件不同,所需套取的工資標(biāo)準(zhǔn)表也不同,比如管理人員、技術(shù)人員所用的工資標(biāo)準(zhǔn)表是不同的。
(2)工資標(biāo)準(zhǔn)表之間可存在先后的順序關(guān)系,比如公務(wù)員工資套取中,先要確定其工資級(jí)別、檔次,然后再根據(jù)工資級(jí)別、檔次確定工資額。
(3)工資項(xiàng)目的取值既可能是常量數(shù)值,也可為一個(gè)包含變量的計(jì)算公式,比如四金、個(gè)調(diào)稅的計(jì)算公式等。
3系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)
根據(jù)工資標(biāo)準(zhǔn)表的以上特點(diǎn),我們以Excel的多頁(yè)二維表格為載體,使用XML存儲(chǔ)指令,Delphi的prExpr作為表達(dá)式的計(jì)算和判斷,設(shè)計(jì)實(shí)現(xiàn)了一個(gè)通用的、靈活的、可擴(kuò)展的工資標(biāo)準(zhǔn)系統(tǒng)。
Excel可以建立多頁(yè)(sheet)二維表格,每個(gè)頁(yè)(sheet)用來(lái)保存一個(gè)工資標(biāo)準(zhǔn)表,每頁(yè)(sheet)的行、列來(lái)保存工資標(biāo)準(zhǔn)表的條件,交叉部分保存對(duì)應(yīng)工資項(xiàng)目的取值。
XML是一個(gè)結(jié)構(gòu)化的描述語(yǔ)言,具有較高的可讀性、自描述性,易于解析,在這里用來(lái)存儲(chǔ)操作指令,比如工資標(biāo)準(zhǔn)表的類型(簡(jiǎn)單類型/復(fù)合類型),套取結(jié)果在數(shù)據(jù)庫(kù)中保存的表和字段等信息。
prExpr是基于Delphi的一個(gè)第三方工具,實(shí)現(xiàn)了簡(jiǎn)單表達(dá)式的計(jì)算和判斷,它的特點(diǎn)是可以自定義函數(shù)。
具體實(shí)現(xiàn)方法如下:
(1) Excel的第一頁(yè)(sheet)作為索引頁(yè),在這頁(yè)里,第一列保存條件表達(dá)式,第二列保存待處理的多個(gè)后續(xù)頁(yè)面名稱,這樣我們就可以根據(jù)不同條件,按照定義的順序逐次處理這些頁(yè)面,進(jìn)行不同工資標(biāo)準(zhǔn)表的套取(參見(jiàn)圖1)。

(2) Excel的第一頁(yè)之后的各頁(yè)面(sheet)定義工資標(biāo)準(zhǔn)表,在頁(yè)面(sheet)里,保留左上角第一格(第一行、第一列的交叉位置)存儲(chǔ)XML格式的操作指令,第一列保存條件表達(dá)式,按處理方式的不同,我們把工資標(biāo)準(zhǔn)表分為兩種形式,即簡(jiǎn)單模式和分組模式,這兩種模式基本能夠處理大多數(shù)的工資套取的情況。
1)簡(jiǎn)單模式,第一行和第一列存儲(chǔ)條件表達(dá)式,行列交叉的中間位置存儲(chǔ)對(duì)應(yīng)的工資數(shù)值,如果涉及多個(gè)字段的取值,可以在XML指令中進(jìn)行定義,比如在XML中用屬性fieldnames定義逗號(hào)隔開(kāi)的多個(gè)字段名稱,工資數(shù)值部分也對(duì)應(yīng)地定義多個(gè)數(shù)值。對(duì)于只有行條件或者列條件的情況,作為特例,只要定義一個(gè)條件為“真”的特殊列條件或行條件,就可以解決。系統(tǒng)在處理時(shí),先遍歷第一列里的條件表達(dá)式,符合條件即停止列條件遍歷,接著遍歷第一行里的表達(dá)式,符合條件即停止行條件遍歷,提取確定的行、列所在的數(shù)值(參見(jiàn)圖2)。

2)分組模式,第一列存儲(chǔ)條件表達(dá)式,第二列存儲(chǔ)字段賦值表達(dá)式(字段=表達(dá)式),多個(gè)賦值表達(dá)式之間用逗號(hào)隔開(kāi),第三列定義分組情況,系統(tǒng)在處理時(shí),遍歷第一列里的條件表達(dá)式,符合條件即取得該行字段賦值表達(dá)式,對(duì)字段進(jìn)行賦值,然后跳過(guò)同一組的行,繼續(xù)遍歷(參見(jiàn)圖3)。

(3)函數(shù)及變量。
1)自定義函數(shù)。根據(jù)工資業(yè)務(wù)的需求,我們定義了以下函數(shù):
BETWEEN(字段名, Value1,Value2):字段值是否介于兩者之間,例如BETW(A0151,5,9);
IN(字段名,value1,value2,value3,…,value n):字段值是否為value1,value2,value3,…,value n中的一個(gè);
NOW:當(dāng)前時(shí)間;
TRUE:符合條件;
FALSE:不符合條件;
AGE(字段,'年月日'):年份計(jì)算,例如年齡、工作年限等。
2)常用操作符。數(shù)字及字符的操作符如加、減、乘、除,邏輯操作符如AND、OR、NOT都是prExpr按照Pascal的規(guī)則提供的。
3)變量。系統(tǒng)可以使用兩種形式的變量:一種是相關(guān)數(shù)據(jù)表的字段,對(duì)于有可能出現(xiàn)沖突的變量名字,可以采用table.fieldname的方式;第二種變量是用戶自定義變量,通過(guò)variable=value的方式傳入。
(4)處理過(guò)程(參見(jiàn)圖4)。

4總 結(jié)
我們通過(guò)Excel來(lái)存儲(chǔ)工資標(biāo)準(zhǔn)數(shù)據(jù),使用 XML這種結(jié)構(gòu)化的描述語(yǔ)言來(lái)表達(dá)指令信息,由prExpr來(lái)判斷條件,計(jì)算表達(dá)式,在Delphi平臺(tái)上,幾項(xiàng)技術(shù)結(jié)合在一起,發(fā)揮各自的長(zhǎng)處,完成了一套靈活、可擴(kuò)展的工資標(biāo)準(zhǔn)系統(tǒng)。
主要參考文獻(xiàn)
[1][美]Steven Holzner. XML 使用詳解[M]. 瀟湘工作室,譯. 北京:機(jī)械工業(yè)出版社,1999.
[2]李維.Delphi 3從入門到精通[M].北京:宇航出版社,1998.
[3]杜茂康,劉宴兵,袁浩.Excel與數(shù)據(jù)處理[M].北京:電子工業(yè)出版社 ,2005.
[4]蘇術(shù)鋒.通用工資管理軟件的設(shè)計(jì)[J].中國(guó)管理信息化:會(huì)計(jì)版,2007(6):14-16.