此文章出處于:https://blog.csdn.net/kingrycn/article/details/56431828
單據(jù)模板公式使用
(一) 公式使用場景
用戶使用產(chǎn)品時(shí)查邢,往往對(duì)單據(jù)上的字段取值有各種不同的需求檩奠。為此單據(jù)模板提供
了模板公式功能球化,可以讓實(shí)施顧問或者用戶通過配置各種公式杆勇,并且不用修改代碼齐鲤,從
而滿足用戶的各種個(gè)性化需求斥废。
(二) 單據(jù)模板三種公式
1、編輯公式
可實(shí)現(xiàn)單據(jù)編輯中字段自動(dòng)帶值的功能给郊。只在編輯狀態(tài)起作用牡肉,在某字段上設(shè)置好
編輯公式,當(dāng)此字段編輯后淆九,公式會(huì)被執(zhí)行统锤,并將結(jié)果填充到目的字段上。
例如:單據(jù)上編輯業(yè)務(wù)員吩屹,自動(dòng)帶入部門
2跪另、顯示公式
可實(shí)現(xiàn)單據(jù)顯示時(shí)加載非持久信息的功能。只在非編輯狀態(tài)起作用煤搜,例如查詢后加
載或保存后刷新界面等免绿,模板上的顯示公式均會(huì)執(zhí)行,運(yùn)算結(jié)算會(huì)顯示到相應(yīng)字段上擦盾。
例如:采購入庫單取采購訂單的預(yù)計(jì)到貨日期嘲驾。
3、控制公式
可實(shí)現(xiàn)單據(jù)保存的檢查功能迹卢。只在編輯狀態(tài)起作用辽故,一般在單據(jù)保存時(shí)執(zhí)行所有字
段上的控制公式,根據(jù)公式類型的不同做不同的響應(yīng)腐碱,可能彈出錯(cuò)誤信息誊垢,也可能彈出
確認(rèn)信息等掉弛。可以起到控制及提示作用喂走,項(xiàng)目上應(yīng)用廣泛殃饿。
控制公式又分為:提示公式、檢查公式芋肠、界面控制公式三種乎芳。
a、提示公式:如單據(jù)金額超過某一數(shù)值時(shí)帖池,進(jìn)行提示或彈出界面奈惑,用戶以此判斷
是否繼續(xù)保存單據(jù)。
b睡汹、檢查公式:例如:單據(jù)金額超過某一數(shù)值時(shí)肴甸,報(bào)出錯(cuò)誤,不能保存單據(jù)囚巴。
c雷滋、界面控制公式:根據(jù)條件判斷,單據(jù)上的字段顏色顯示文兢、或者能否編輯晤斩、或者
是否激活。
(三) 常用公式的應(yīng)用場景
在產(chǎn)品中姆坚,開發(fā)人員一般情況下直接在后臺(tái)通過 sql語句實(shí)現(xiàn)用戶所需功能澳泵。實(shí)際
上我們定義的公式在執(zhí)行時(shí)也是轉(zhuǎn)化為 sql語句,本質(zhì)是一樣的兼呵。
場景一:采購訂單表體行中取來源請購單行的需求日期兔辅,客戶需要
分析計(jì)劃到貨日期與需求日期的差距, 相差較大的話需要對(duì)供應(yīng)商催
貨或者提醒下游用料單位做好材料短缺準(zhǔn)備击喂。
實(shí)現(xiàn)此功能维苔,可使用三個(gè)表體自定義項(xiàng),分別起名為:需求日期懂昂、相差天數(shù)介时、是否
嚴(yán)重延遲。
a凌彬、需求日期顯字段示公式定義為:
getcolvalue(po_praybill_b ,dreqdate ,pk_praybill_b ,csourcebid )
意思是:從請購單表體(po_praybill_b)中取需求日期(dreqdate)的值沸柔,條件是
請購單表體行 ID(pk_praybill_b)等于采購訂單的表體字段來源單據(jù)明細(xì)值(csourcebid) 。
類似于 sql語句:select dreqdate from po_praybill_b where pk_praybill_b= csourcebid
b铲敛、相差天數(shù)定義顯示公式為:
comparedate(dplanarrvdate ,vbdef1 ,"D" )
意思是:比較采購訂單表體計(jì)劃到貨日期(dplanarrvdate)與自定義項(xiàng)一(需求日
期)的差值褐澎,用天數(shù)(D)來體現(xiàn)。
c伐蒋、在是否嚴(yán)重延遲定義顯示公式為:iif(vbdef2>5,"是","否")
意思是:如果自定義項(xiàng)二的值大于 5工三,則為:是迁酸,否則為:否
場景二:單據(jù)中編輯業(yè)務(wù)員,給部門字段帶出人員的任職部
門俭正。
此時(shí)可以在人員字段中定義編輯公式:
rowcount->getrowcount("bd_psnjob","pk_psndoc",cemployeeid,"pk_org",pk_org);
pk_dept->iif(rowcount==1,getcolvalue2(bd_psnjob,pk_dept,pk_psndoc,cemployeeid,pk
_org,pk_org),pk_dept);
pk_dept_v->iif(rowcount==1,getcolvalue(org_dept ,pk_vid , pk_dept ,
pk_dept),pk_dept_v);
場景三:如果請購單的請購數(shù)量超過 1000胁出,給出用戶提示,
讓用戶自己判斷是否保存段审。
方式一:使用控制公式:Confirm->iif(nastnum>1000,"請購數(shù)量大于1000,是否保存绷落?","")
方式二:使用控制公式:Error->iif(,,"")在保存時(shí)根據(jù)公式條件函喉,進(jìn)行報(bào)錯(cuò)處理避归,如果出錯(cuò)則保存失敗。
Confirm->iif(,,"")
在保存時(shí)根據(jù)公式條件,給出提示信息葡盗,確認(rèn)是否繼續(xù)螟左。
2、Editable[itemkey]->iif(,"Y","N")
如果條件為真胶背,表中字段可編輯
4、Enabled[itemkey]->iif(,"Y","N")
如果條件為真奄妨,激活表中字段
6、ForeGround->iif(,"red","blue")
可根據(jù)條件值砂轻,將當(dāng)前設(shè)置公式的字段顏色變換奔誓,起到醒目提示的作用。
8、Message->iif(,,"")
在保存時(shí)根據(jù)公式條件蜕煌,給出提示信息派阱,不影響保存。