国产精品一区二区白嫩在线观看 _国产一区二区三精品久久久无广告_亚洲中亚洲中文字幕无线乱码_在线观看一区二区三区四区五区_精品无码人妻一区二区三区_人妻中文字幕乱人伦在线_欧美狂野精品一区二区在线观看_日韩一卡二卡在线播放_国产视频一区二区三区在线看_中文字幕欧美人妻精品一区

23
2023
03

金蝶云星空BOSS語句整理?。?!整理耗費(fèi)了整整兩個(gè)小時(shí)?。?!

一、前置條件-文本類字段

1.文本類字段設(shè)置前置條件一定要用三段式:前端看到文本類字段為空,數(shù)據(jù)庫里有時(shí)儲存的是一個(gè)空格符

①文本不為空:文本<>null and 文本<> '' and 文本<> ' ' 

②文本為空:文本==null Or 文本=='' Or 文本==' '

2.判斷文本是否包含某個(gè)值:文本.find('XXX')>=0

3..find('str'),返回目標(biāo)字符的位置,>=0則代表字符存在(0表示第1位,1表示第2位,以此類推)

4..find('str')是python語句;like ‘%XXX%’是sql語句,作用同.find('str')

5.實(shí)體服務(wù)規(guī)則/字段值更新/校驗(yàn)規(guī)則不支持sql語句,所以不支持like '%XXX%'

6.過濾語句支持sql語句,所以支持用 like '%XXX%'

進(jìn)階用法

設(shè)置文本='1234567890',

則:截取文本前三位: 文本[0:3]= '123' 或者 文本[:3]= '123'

截取文本后三位:文本[-3:]= '890'

截取文本第三位: 文本[2]= '3'

截取文本倒數(shù)第三位:文本[-3]= '8'

截取所有文本:文本[:]='1234567890'

倒敘截取所有文本:文本[::-1]= '0987654321'

截取文本第三位到第五位:文本[2:5]= '345'

截取文本第三位到倒數(shù)第二位:文本[2:-2]= '345678'

截取文本倒數(shù)第五位到第八位:文本[-5:8]= '678'

截取文本倒數(shù)第七位到倒數(shù)第六位:文本[-7:-5]= '45'


二、前置條件-日期類字段

1.日期字段不能直接與字符串常量進(jìn)行比較:

需要采用.ToString('yyyy-MM-dd')函數(shù),把日期轉(zhuǎn)換為字符串進(jìn)行比較:

F_JD_Date.ToString('yyyy-MM-dd') == '2016-07-07’

2.判斷日期是否大于今天:F_JD_Date>=@currentshortdate

3.取日期的年度:F_JD_Date.Date.Year

取日期的月份:F_JD_Date.Date.Month

取日期的天號:F_JD_Date.Date.Day

4.計(jì)算日期差: (F_JD_Date1 - F_JD_Date2).Days

計(jì)算月份差: (F_JD_Date1 - F_JD_Date2).Months

計(jì)算年度差: (F_JD_Date1 - F_JD_Date2).Years

5.增加天數(shù):F_JD_Date2=F_JD_Date1.AddDays(-1)

增加月份:F_JD_Date2=F_JD_Date1.AddMonths(-1)

增加年份:F_JD_Date2=F_JD_Date1.AddYears(-1)

進(jìn)階應(yīng)用

1.取每月第一天:FSTARTDate= FDate.AddDays(1-float((FDate.ToString("dd"))))

2.取每個(gè)月最后一天(復(fù)雜):FENDDate = FDate.AddDays(1-float((FDate.ToString("dd")))).AddMonths(+1).AddDays(-1)

長日期字段

1.長日期/時(shí)間/打印時(shí)間/

與具體的時(shí)間作比較:F_JD_Date.ToString('yyyy-MM-dd hh:mm:ss') = '2016-07-07 10:05:33'

2.與當(dāng)前時(shí)間作比較:F_JD_Date>@currentlongdate

前置條件-單選輔助資料字段

編碼:F_JD_Assistant <>null And F_JD_Assistant.FNumber=='XXX'

名稱:F_JD_Assistant <>null And F_JD_Assistant.FDataValue.ToString() == 'XXX'

【注意】因?yàn)槎嗾Z言文本字段是按照語言隔離控制的,所以需要使用.ToString()函數(shù),轉(zhuǎn)換成純文本。

前置條件-單選下拉列表字段

下拉列表不為空:F_JD_Combo<>null And F_JD_Combo<>'' And F_JD_Combo<>' '

下拉列表等XXX:F_JD_Combo=='XXX',XXX代表所查詢的枚舉項(xiàng)值

【注意】下拉列表不能用枚舉項(xiàng)名稱作為前置條件

前置條件-分組字段

編碼:F_JD_Group <>null And F_JD_Group.FNumber==‘XXX’

名稱:F_JD_Group<>null And F_JD_Group.FName.ToString()=='XXX'

前置條件-復(fù)選框字段

判斷復(fù)選框字段勾選:FPayBox 或者 FPayBox==1 或者 FPayBoxtrue 或者 FPayBox==True

判斷復(fù)選框字段不勾選:FPayBox ==0 或者 FPayBoxfalse 或者 FPayBox==False              

注意true,不要寫成ture

前置條件-單據(jù)狀態(tài)字段

單據(jù)狀態(tài)<>null and 單據(jù)狀態(tài)=='XXX',XXX代表所需要判斷的狀態(tài)值

前置條件-單據(jù)類型字段

單據(jù)類型為空:單據(jù)類型==null or 單據(jù)類型=='' or單據(jù)類型==' '

單據(jù)類型不為空:單據(jù)類型<>null and單據(jù)類型<>'' and單據(jù)類型<>' '

單據(jù)類型<>null And 單據(jù)類型.編碼== 'XXX'

前置條件-數(shù)值型字段

數(shù)量1>數(shù)量2  或者 數(shù)量1>0

四舍五入:小數(shù)2 = round (小數(shù)1,精度位數(shù))

向下取整:小數(shù)2= int (小數(shù)1)

向上取整:小數(shù)2= int ( round (小數(shù)1+ 0.4999999999 ) )

前置條件-多類別基礎(chǔ)資料列表字段(比如往來單位類型)

多類別基礎(chǔ)資料列表==‘XXX’,

XXX代表所需要判斷的具體基礎(chǔ)資料英文標(biāo)識:

①客戶:BD_Customer

②供應(yīng)商:BD_Supplier

③員工:BD_Empinfo

④部門:BD_Departmnet

⑤其他往來單位:FIN_OTHERS

⑥組織架構(gòu):ORG_Organizations

⑦銀行:BD_BANK(最好能記?。?/p>

前置條件-多類別基礎(chǔ)資料字段(比如往來單位)

多類別基礎(chǔ)資料列表=='XXX' and 多類別基礎(chǔ)資料.FNumber=='XXX'

需要注意的是,多類別基礎(chǔ)資料因?yàn)榧狭硕喾N基礎(chǔ)資料,只能設(shè)置共性的屬性作為條件。不能取到某種基礎(chǔ)資料的特有屬性作為條件。

如果一定要取特有屬性作為條件,則需要添加基礎(chǔ)資料字段,設(shè)置實(shí)體服務(wù)規(guī)則取值。再以新加字段的特有屬性作為條件。

是否有源單

判斷單據(jù)有源單:ISDRAW() 或者 ISDRAW()==true 或者 ISDRAW()==True 或者 ISDRAW()==1

判斷單據(jù)無源單:ISDRAW()==false 或者 ISDRAW()==False 或者 ISDRAW()==0

注意不可缺少(),注意不能使用isdraw/IsDraw,注意不能使用TRUE/FALSE

或者可以變通的用單據(jù)體的源單類型或者源單編號字段結(jié)合遍歷語句判斷是有有源單

是否已下推

判斷單據(jù)已經(jīng)下推:ISPUSH ()或者ISPUSH ()==true或者ISPUSH ()==True或者ISPUSH ()==1

判斷單據(jù)未下推:ISPUSH ()==false或者ISPUSH ()==False或者ISPUSH ()==0

注意不可缺少(),注意不能使用ispush/IsPush,注意不能使用TRUE/FALSE

或者可以變通的取下游單據(jù)反寫的字段作為條件

組織字段

組織<>null And 組織.編碼=='XXX'

組織==@currentorgid(當(dāng)前登錄組織)

用戶/創(chuàng)建人/修改人/打印人字段

用戶<>null And 用戶.編碼=='XXX’

用戶==@userid(當(dāng)前登錄用戶)

前置條件-基礎(chǔ)資料字段

1.基礎(chǔ)資料字段,F(xiàn)_JD_Base返回的是一個(gè)復(fù)雜對象 BaseFieldDynamicRow,包含了很多的屬性,不能與一個(gè)簡單常量進(jìn)行比較。如 F_JD_Base == '資料名稱',達(dá)不到預(yù)期效果。需要明確的指定屬性與常量值進(jìn)行比較:

2.內(nèi)碼:F_JD_Base<>null and F_JD_Base.Id == 100001

3.使用編碼:F_JD_Base<>null and F_JD_Base.FNumber =='GW0001'

或者 F_JD_Base<>null and F_JD_Base['Number']=='GW0001'

4.使用名稱:F_JD_Base<>null and F_JD_Base.FName.ToString() == '采購員'

注意:寫條件最好是一步一步來,寫全寫對,不要只寫F_JD_Base.FNumber == 'GW0001'

基礎(chǔ)資料字段.基礎(chǔ)資料屬性(比如申請部門.上級部門)

1.編碼:F_JD_Base<>null and F_JD_Base.FProperty<>null  and F_JD_Base.Fproperty.Number == 'GW0001'

2.名稱:F_JD_Base<>null and F_JD_Base.FProperty<>null  and F_JD_Base.FProperty['Name'] == 'GW0001'

3.注意:需要在申請部門字段上做上級部門的屬性引用

基礎(chǔ)資料字段.輔助資料屬性(比如申請部門.部門屬性)

編碼:F_JD_Base<>null and F_JD_Base.FDeptProperty <>null and F_JD_Base. FDeptProperty ['Number'] == 'DP02_SYS'

基礎(chǔ)資料字段.分組屬性(比如申請部門.部門分組)

編碼:F_JD_Base<>null and F_JD_Base.FGroup<>null and F_JD_Base.FGroup['Number']=='001'

名稱:F_JD_Base<>null and F_JD_Base.FGroup<>null and F_JD_Base.FGroup['Name'].ToString()=='分組1'

多級引用屬性做條件(比如申請部門.上級部門.部門屬性)

不支持F_JD_Base.FProperty.FDeptProperty['Number']== 'DP02_SYS'多級屬性引用作為條件的

標(biāo)識與綁定實(shí)體屬性的選擇

①F_JD_Base<>null and F_JD_Base.FNumber == ‘GW0001'  FNumber取的是編碼的標(biāo)識

②同樣可以寫作:F_JD_Base<>null and F_JD_Base['Number']== 'GW0001'

③F_JD_Base<>null and F_JD_Base.FProperty<>null  and F_JD_Base.Fproperty.Number == 'GW0001' Number 取的是編碼的綁定實(shí)體屬性

④同樣可以寫作: F_JD_Base<>null and F_JD_Base.FProperty<>null  and F_JD_Base.Fproperty['Number']== 'GW0001'

建議統(tǒng)一使用['Number']的格式

基礎(chǔ)資料屬性引用的作用歸納

①需要基礎(chǔ)資料字段做屬性引用,基礎(chǔ)資料屬性字段,才可以選到被引用的屬性。

②實(shí)體服務(wù)規(guī)則/字段值更新事件的前置條件/賦值公式需要引用基礎(chǔ)資料屬性,否則會(huì)報(bào)錯(cuò)

③工作流-流程設(shè)計(jì)器-流程線/(流程節(jié)點(diǎn)-審批動(dòng)作-參與人方案)-高級

④預(yù)算控制規(guī)則-控制單據(jù)-控制維度-字段取值來源

【反例】過濾語句與憑證模板的(科目影響因素/核算維度)取值不需要引用屬性

寫語句注意事項(xiàng)

1.符號的應(yīng)用

①寫條件語句,等號用==;寫賦值語句用=;寫過濾語句用=

②不等號可以用<>,也可以用!=

③可以用A in ['xxx', 'xxx','xxx']來替換A=='xxx' or  A=='xxx' or  A=='xxx'

同理,A not in ['xxx', 'xxx','xxx']替換A<>'xxx' and  A<>'xxx' and  A<>'xxx'

2.互斥條件的寫法:

原條件:A>0 and (B<>null or C in ['xxx', 'xxx'])

互斥條件:A<=0 or (B==null and C not in ['xxx', 'xxx'])

3.能做實(shí)體服務(wù)規(guī)則不做字段值更新事件,原因如下:

①滿足條件即觸發(fā),不需點(diǎn)擊觸發(fā)        ②配置工作量少(以A=B+C舉例)

③條件不滿足亦可配置服務(wù)                  ④易于后續(xù)維護(hù)與排查

4.粘貼網(wǎng)頁/word/excel的語句到BOS編輯器,最好要通過txt文檔中轉(zhuǎn),因?yàn)榫W(wǎng)頁的語句可能會(huì)帶有格式,導(dǎo)致BOS不能識別。

5.實(shí)體服務(wù)規(guī)則/字段值更新事件:A=B+C,需要在前置條件設(shè)置B==B and C==C;并且需要勾選B與C兩個(gè)字段的“即時(shí)觸發(fā)字段值更新事件”

6.給單據(jù)體字段賦值,需要在單據(jù)體上設(shè)置實(shí)體服務(wù)規(guī)則,或者單據(jù)體字段的字段值更新事件。不能是單據(jù)頭的實(shí)體服務(wù)規(guī)則。

if…else語句

①'賦值a' if (條件=='xxx') else '賦值b'

②'賦值a' if (條件1=='xxx') else ('賦值b' if (條件2=='xxx') else '賦值c')

③'賦值a' if (條件1=='xxx') else ('賦值b' if (條件2'==xxx') else ('賦值c' if (條件3=='xxx') else '賦值d'))

即時(shí)觸發(fā)字段值更新事件的作用

①為字段值更新事件/實(shí)體服務(wù)規(guī)則的前置條件字段觸發(fā)前置條件。

②影響新增修改單據(jù)時(shí),數(shù)值型字段匯總到上級字段的功能實(shí)時(shí)觸發(fā)更新。

③手工新增/修改單據(jù)時(shí),在單據(jù)體底端實(shí)時(shí)統(tǒng)計(jì)數(shù)值型字段的匯總值。

④單選按鈕組字段作為前置條件(包含字段值更新與實(shí)體服務(wù)規(guī)則),單選按鈕字段需要勾選該屬性才能生效。

【注意】自定義的字段,默認(rèn)不勾選“即時(shí)觸發(fā)字段值更新事件”。

計(jì)數(shù)遍歷

len(filter(lambda x:x.FExpID<>null and x.FExpID.FName=='業(yè)務(wù)招待費(fèi)', FEntity))>0

①len:計(jì)數(shù); ②filter:過濾;③ lambda:遍歷;④ x:x. 固定寫法;⑤ FExpID:費(fèi)用項(xiàng)目字段的標(biāo)識;⑥ FExpID.FName:費(fèi)用項(xiàng)目.名稱的標(biāo)識 ;⑦ FEntity:費(fèi)用報(bào)銷單的明細(xì)單據(jù)體的標(biāo)識

語句大意:先使用lambda函數(shù)對FEntity單據(jù)體做遍歷操作,再使用filter函數(shù),按照FExpID<>null and FExpID.FName=='業(yè)務(wù)招待費(fèi)'作為條件,將滿足條件的明細(xì)行過濾出來,最后len函數(shù)對滿足條件的明細(xì)行做計(jì)數(shù)統(tǒng)計(jì),得到的數(shù)值與0做比較返回true或者false。

求和遍歷

FExpAmountSum=sum(map(lambda x:x.FExpenseAmount, FEntity)

① FExpAmountSum :單據(jù)頭匯總金額字段的標(biāo)識; ② sum:求和;③ map:映射;④ lambda:遍歷;⑤ x:x. 固定寫法;⑥ FExpenseAmount:單據(jù)體費(fèi)用金額字段的標(biāo)識;⑥FEntity:費(fèi)用報(bào)銷單的明細(xì)單據(jù)體的標(biāo)識

語句大意:先使用lambda函數(shù)對FEntity單據(jù)體做遍歷操作,再使用map函數(shù),將FExpenseAmount字段從明細(xì)行映射挑選出來組成一個(gè)新的集合;最后使用sum函數(shù)對集合里面的所有元素做求和匯總,得到的數(shù)值賦值給FExpAmountSum字段。

求和遍歷 經(jīng)典案例

【需求】報(bào)銷單申請報(bào)銷金額不能超過收票金額之和(不能超發(fā)票金額報(bào)銷)

【思路】在BOS為報(bào)銷單設(shè)置保存校驗(yàn)規(guī)則,用sum(map(lambda語句求和匯總收票單信息單據(jù)體里的收票單金額,再與單據(jù)頭的申請報(bào)銷金額匯總字段,做單據(jù)合法性校驗(yàn)大小。

【語句】sum(map(lambda x : (x.FRecInv.FSUMALLAMOUNT),FRecInvInfo))<= FReqReimbAmountSum

①FRecInvInfo:費(fèi)用報(bào)銷單的收票信息單據(jù)體的標(biāo)識;②FRecInv:收票信息單據(jù)體的收票單字段(基礎(chǔ)資料)的標(biāo)識;③FRecInv.FSUMALLAMOUNT:收票單.價(jià)稅合計(jì)的標(biāo)識。

求和遍歷 進(jìn)階案例

【業(yè)務(wù)場景】求和匯總費(fèi)用報(bào)銷單費(fèi)用項(xiàng)目.名稱=業(yè)務(wù)招待費(fèi)的明細(xì)行的費(fèi)用金額。

【語句1】FExpAmountSum=sum(map(lambda x:x.FExpenseAmount if FExpID<>null and FExpID.FName=='業(yè)務(wù)招待費(fèi)’ else 0 , FEntity)

語句大意:先使用lambda函數(shù)對FEntity單據(jù)體做遍歷操作,再使用map函數(shù),按照FExpID<>null and FExpID.FName==‘業(yè)務(wù)招待費(fèi)'作為條件,將滿足條件的FExpenseAmount字段從明細(xì)行映射挑選出來(若不滿足條件, FExpenseAmount字段則為0),組成一個(gè)新的集合;最后使用sum函數(shù)對集合里面的元素做相加統(tǒng)計(jì),得到的數(shù)值賦值給FExpAmountSum字段。

【語句2】FExpAmountSum=sum(map(lambda(x:x.FExpenseAmount ,filter(lambda(y:y.FExpID<>null and y.FExpID.FName=='業(yè)務(wù)招待費(fèi)'), FEntity))))>0

語句大意:先使用lambda函數(shù)對FEntity單據(jù)體做遍歷操作,再使用filter函數(shù),按照FExpID<>null and FExpID.FName==‘業(yè)務(wù)招待費(fèi)'作為條件,將滿足條件的明細(xì)行過濾出來;再使用lambda函數(shù)對這部分明細(xì)行做遍歷操作;再使用map函數(shù),將 FExpenseAmount字段從明細(xì)行映射挑選出來,組成一個(gè)新的集合;最后使用sum函數(shù)對集合里面的元素做相加統(tǒng)計(jì),得到的數(shù)值賦值給FExpAmountSum字段。

拼接遍歷

FCausa = '\n'.join(o for o in (set(map(lambda x:(format(x.FRemark)), FEntity))))

①FCausa :單據(jù)頭事由字段的標(biāo)識;②‘\n’:自動(dòng)換行符;③.join:拼接;④ o for o in 固定寫法;⑤ set:去重; ⑥map:映射;⑦lambda:遍歷;⑧format:格式化字符串;⑨FRemark :單據(jù)體備注字段的標(biāo)識;⑩ FEntity:費(fèi)用報(bào)銷單的明細(xì)單據(jù)體的標(biāo)識

語句大意:先使用format函數(shù)對先對FRemark做格式化操作,得到純文本。再使用lambda函數(shù)對FEntity單據(jù)體做遍歷操作,再使用map函數(shù),將格式化后的字符串從明細(xì)行映射挑選出來,組成一個(gè)新的集合;再使用set函數(shù),對集合里的元素做去重操作,去重后按照原有的順序組成新的集合。最后使用join函數(shù)對集合里面的元素,使用自動(dòng)換行符'\n'做拼接操作,得到的字符串賦值給FCausa字段。

遍歷語句注意事項(xiàng)

適用范圍

1.支持單據(jù)頭實(shí)體服務(wù)規(guī)則

2.支持表單服務(wù)策略與校驗(yàn)規(guī)則

3.不支持單據(jù)體實(shí)體服務(wù)規(guī)則

4.不支持字段值更新事件

多單據(jù)體遍歷

不支持同時(shí)遍歷多個(gè)單據(jù)體/子單據(jù)體

業(yè)務(wù)場景:同時(shí)對采購訂單明細(xì)單據(jù)體的價(jià)稅合計(jì)字段求和,同時(shí)對自定義的子單據(jù)體的金額字段求和,然后兩者作大小比較

遍歷語句 其他應(yīng)用

基礎(chǔ)資料單據(jù)體字段

如需對基礎(chǔ)資料字段,單據(jù)體中屬性進(jìn)行比較,也需要使用lambda進(jìn)行遍歷:

【需求】判斷申請人(基礎(chǔ)資料員工)字段的任崗信息單據(jù)體上是否至少存在一行就任崗位.名稱=財(cái)務(wù)經(jīng)理的明細(xì)行。

【語句】len(filter(lambda x:(x['Post']['Name'].ToString() =='財(cái)務(wù)經(jīng)理' ), FStaffId.PostEntity)) >0

語句說明: ①FStaffId:申請人字段的標(biāo)識;② PostEntity:基礎(chǔ)資料員工的員工任崗信息單據(jù)體的ORM實(shí)體名;③Post:基礎(chǔ)資料員工的員工任崗信息單據(jù)體的就任崗位字段的綁定實(shí)體屬性;④Name:Post的名稱屬性的綁定實(shí)體屬性

前置條件-多選類字段

1.多選基礎(chǔ)資料未錄入:len( FMulBase )<= 0 或者 FMulBase.Count<=0

多選基礎(chǔ)資料不為空:len( FMulBase ) > 0 或者 FMulBase.Count>0

【注意】只能是Count,不能是count或者COUNT。

多選基礎(chǔ)資料字段包含編碼為001的值:len(filter(lambda x:(x.Number=='001'),F_xkcw_MulBase))>0

多選基礎(chǔ)資料字段不包含編碼為001的值:len(filter(lambda x:(x.Number=='001'),F_xkcw_MulBase))<=0

2.多選輔助資料字段為空:MulAssistant==null  多選輔助資料字段不為空:MulAssistant<>null

多選輔助資料字段包含編碼為China的值:

len(filter(lambda x:(x.F_xkcw_MulAssistant<>null and x.F_xkcw_MulAssistant.FNumber=='China'),F_xkcw_MulAssistant))>0

3.有選擇某一個(gè)枚舉項(xiàng):多選下拉列表.find('枚舉項(xiàng)值')!=-1  沒有選擇某一個(gè)枚舉項(xiàng):多選下拉列表.find('枚舉項(xiàng)值')==-1

是否都有勾選兩個(gè)枚舉項(xiàng):多選下拉列表.find('枚舉項(xiàng)值a')!=-1 and 多選下拉列表.find('枚舉項(xiàng)值b')!=-1

是否至少有勾選兩個(gè)枚舉項(xiàng)其一:多選下拉列表.find('枚舉項(xiàng)值a')!=-1 or 多選下拉列表.find('枚舉項(xiàng)值b')!=-1

兩個(gè)枚舉項(xiàng)都不勾選:多選下拉列表.find('枚舉項(xiàng)值a')==-1 and 多選下拉列表.find('枚舉項(xiàng)值b')==-1

兩個(gè)枚舉項(xiàng)至少其一不勾選:多選下拉列表.find('枚舉項(xiàng)值a')==-1 or 多選下拉列表.find('枚舉項(xiàng)值b')==-1

過濾語句

過濾與高級過濾

1.基礎(chǔ)資料字段的特有功能 2.高級過濾的過濾條件可以直接粘貼語句的 3.均支持python與sql的語法

需求分析

【需求1】在采購增值稅專用發(fā)票的收票信息頁簽,選擇發(fā)票時(shí),只能選擇到查驗(yàn)狀態(tài)=已查驗(yàn)的收票單

【語句】FISEXAMINE='1'

FISEXAMINE:收票單.查驗(yàn)狀態(tài)的標(biāo)識

【需求2】在采購增值稅專用發(fā)票選擇物料時(shí),只能選擇到物料.默認(rèn)供應(yīng)商=單據(jù)頭.供應(yīng)商的物料。

【語句】FDefaultVendor=GetValue(FSUPPLIERID)

FDefaultVendor:物料.默認(rèn)供應(yīng)商的標(biāo)識

FSUPPLIERID:單據(jù)頭.供應(yīng)商的標(biāo)識

【需求5】費(fèi)用報(bào)銷單,想要實(shí)現(xiàn):當(dāng)申請部門不為空時(shí),往來單位供應(yīng)商F8,按照供應(yīng)商.負(fù)責(zé)部門=申請部門做過濾;當(dāng)申請部門為空時(shí),往來單位供應(yīng)商F8,不做限制。

【語句用法】case when 條件語句 then 條件滿足時(shí)的過濾語句 else 條件不滿足時(shí)的過濾語句 end

特點(diǎn):作用類同于if…else語句

【具體語句】FDeptId=CASE WHEN (GetValue(FRequestDeptID) <>0 and GetValue(FRequestDeptID) is not null) THEN GetValue(FRequestDeptID) ELSE FDeptID END

語句缺陷

【語句缺陷】1.不管前置條件是否滿足,基礎(chǔ)資料都必須使用FDeptId屬性作為過濾的依據(jù)。若是想要實(shí)現(xiàn)當(dāng)條件不滿足時(shí),使用非FDeptId屬性作為過濾的依據(jù),就沒辦法實(shí)現(xiàn)。

2.因?yàn)閟elect與case when結(jié)合的語句,select子查詢語句只能返回1個(gè)值(select若不與case when結(jié)合,是可以返回多個(gè)值的),但是截圖里的語句需要用到in,會(huì)返回多個(gè)值。所以該語句會(huì)報(bào)錯(cuò)不能實(shí)現(xiàn)需求。

【需求6】當(dāng)申請人字段(基礎(chǔ)資料員工)不為空時(shí),崗位信息字段(基礎(chǔ)資料崗位信息)F8開窗選擇(或者模糊查詢選擇、快速錄入)時(shí),只可選擇申請人任崗的并且沒被禁用的崗位。否則,崗位信息字段能選到所有的崗位。

BOS設(shè)計(jì)器-業(yè)務(wù)字段-崗位字段的使用案例https://vip.kingdee.com/article/155401307799205376

【語句1】FPOSTID  in (select FPOSTID from T_BD_STAFF where FEMPINFOID = GetValue(申請人字段的標(biāo)識) AND FFORBIDSTATUS = 'A')

【語句2】FPOSTID in (select t1.FPOSTID from T_BD_STAFF t1 inner join T_ORG_POST t2 on t1.FPOSTID = t2.FPOSTID where t1.FEMPINFOID = GetValue(申請人字段的標(biāo)識) AND t1.FFORBIDSTATUS = ‘A’)

【語句術(shù)語具體說明】

①T_ORG_POST:基礎(chǔ)資料崗位信息-單據(jù)頭實(shí)體崗位信息的表名。②FPOSTID:基礎(chǔ)資料崗位信息的主鍵字段名/崗位信息表T_ORG_POST的Id,也就是崗位信息本身。③FPOSTID:基礎(chǔ)資料員工任崗信息-就任崗位字段的字段名。④T_BD_STAFF:基礎(chǔ)資料員工任崗信息-單據(jù)頭實(shí)體員工信息的表名。⑤FEMPINFOID:基礎(chǔ)資料員工任崗信息-員工字段的字段名。⑥FFORBIDSTATUS:基礎(chǔ)資料員工任崗信息-禁用狀態(tài)字段的字段名。A是未禁用。

語句邏輯具體講解

【語句大意】1.員工任崗表T_BD_STAFF定義為t1,崗位信息表T_ORG_POST定義為t2。

2.根據(jù)t1.FPOSTID = t2.FPOSTID的匹配關(guān)系將t1表與t2表通過inner join(內(nèi)拼接)語句拼接成一個(gè)新表。

3.在新表里面按照條件t1.FEMPINFOID = GetValue(申請人字段的標(biāo)識) AND FFORBIDSTATUS = 'A'過濾出符合條件的記錄明細(xì)。

4.在這些記錄里面映射出FPOSTID字段作為元素組成一個(gè)集合。

5.單據(jù)的崗位信息字段的屬性FPOSTID與該集合的元素用in語句做匹配過濾。

【需求7】當(dāng)部門字段不為空時(shí),員工字段F8開窗選擇時(shí),只可選擇在部門字段下勾了負(fù)責(zé)人崗位的崗位任崗的,并且沒被禁用的員工。否則,員工F8開窗選擇,能選到?jīng)]被禁用的所有員工。

【舉例】財(cái)務(wù)部 有三個(gè)崗位(財(cái)務(wù)總監(jiān),會(huì)計(jì),出納),其中財(cái)務(wù)總監(jiān)勾選負(fù)責(zé)人崗位。部門字段選擇財(cái)務(wù)部后,再選擇員工字段,只能選擇員工任崗為財(cái)務(wù)總監(jiān)的員工。

【語句】FID in (select t1. FEMPINFOID from (T_BD_STAFF t1 inner join T_HR_EMPINFO t2 on t1. FEMPINFOID = t2.FID) inner join T_ORG_HRPOST t3 on G.FPOSTID= t1.FPOSTID  where t1. FDEPTID = GetValue(FRequestDeptID) AND t1.FFORBIDSTATUS = 'A' and t3.FLEADERPOST ='1')

修改枚舉項(xiàng)名稱

【需求】想要修改報(bào)銷單發(fā)票類型字段的普通發(fā)票的名稱,以及新增發(fā)票類型。

【錯(cuò)誤做法】直接在BOS拓展報(bào)銷單,直接修改發(fā)票類型關(guān)聯(lián)的枚舉類型:發(fā)票類型(財(cái)務(wù)使用)的枚舉項(xiàng)名稱,與添加新的枚舉項(xiàng)

【后果】系統(tǒng)每一次升級,都會(huì)還原系統(tǒng)預(yù)置的枚舉項(xiàng)名稱,并且丟失新加的枚舉項(xiàng)信息

【正確做法】參照發(fā)票類型(財(cái)務(wù)使用) ,新建一個(gè)枚舉類型,與預(yù)置的枚舉項(xiàng)值保持一致(枚舉項(xiàng)名稱可以做修改),新增枚舉項(xiàng)。發(fā)票類型字段關(guān)聯(lián)新建的枚舉類型。

BOS經(jīng)典案例分析

差旅費(fèi)報(bào)銷單BOS打開報(bào)錯(cuò)

【原理】出差申請單與費(fèi)用申請單and差旅費(fèi)報(bào)銷單與費(fèi)用報(bào)銷單在BOS的構(gòu)造上,是繼承與被繼承的關(guān)系,所以在費(fèi)用申請單及其拓展所做的一切配置,都會(huì)同步配置在出差申請單上。反之則不然。

【具體原因】上述報(bào)錯(cuò)截圖是由于先在出差申請單上添加了一個(gè)標(biāo)識為F_UVPC_Assistant1的字段。后來在費(fèi)用申請單上,又人為手工的添加了一個(gè)同樣標(biāo)識為F_UVPC_Assistant1的字段,由于繼承與被繼承的關(guān)系,在出差申請單上也會(huì)同步新增一個(gè)標(biāo)識為F_UVPC_Assistant1的字段。造成了出差申請單上字段標(biāo)識重復(fù)。BOS重新打開出差申請單的拓展時(shí),觸發(fā)了字段標(biāo)識唯一性的校驗(yàn),從而會(huì)有上述的報(bào)錯(cuò)。

兩個(gè)字段作比較

【需求】列表過濾想要進(jìn)行兩個(gè)金額字段的比較,比如過濾出A字段不等于B字段的單據(jù),如何實(shí)現(xiàn)?

【方法】需要BOS后臺為字段A/字段B配置過濾比較符號集:200

【用途】①單據(jù)列表過濾

②數(shù)據(jù)規(guī)則授權(quán)

③憑證模板的分錄行生成條件

④選單條件策略

自動(dòng)下推服務(wù)

1.審核操作上自動(dòng)下推服務(wù)

2.工作流的自動(dòng)下推動(dòng)作

3.子系統(tǒng)的管理參數(shù)

注意:三者只能擇其一,不能重復(fù)設(shè)置

注意:自動(dòng)下推是整單下推的。不能以單據(jù)體字段作為條件,控制只下推滿足條件的明細(xì)行。


? 上一篇下一篇 ?
<bdo id="bbvp2"><span id="bbvp2"></span></bdo>
  •