一、前置條件-文本類字段
1.文本類字段設置前置條件一定要用三段式:前端看到文本類字段爲空,數據庫裏有時儲存的是一個空格符
①文本不爲空:文本<>null and 文本<> '' and 文本<> ' '
②文本爲空:文本==null Or 文本=='' Or 文本==' '
2.判斷文本是否包含某個值:文本.find('XXX')>=0
3..find('str'),返回目標字符的位置,>=0則代表字符存在(0表示第1位,1表示第2位,以此類推)
4..find('str')是python語句;like ‘%XXX%’是sql語句,作用同.find('str')
5.實體服務規則/字段值更新/校驗規則不支持sql語句,所以不支持like '%XXX%'
6.過濾語句支持sql語句,所以支持用 like '%XXX%'
進階用法
設置文本='1234567890',
則:截取文本前三位: 文本[0:3]= '123' 或者 文本[:3]= '123'
截取文本後三位:文本[-3:]= '890'
截取文本第三位: 文本[2]= '3'
截取文本倒數第三位:文本[-3]= '8'
截取所有文本:文本[:]='1234567890'
倒敘截取所有文本:文本[::-1]= '0987654321'
截取文本第三位到第五位:文本[2:5]= '345'
截取文本第三位到倒數第二位:文本[2:-2]= '345678'
截取文本倒數第五位到第八位:文本[-5:8]= '678'
截取文本倒數第七位到倒數第六位:文本[-7:-5]= '45'
二、前置條件-日期類字段
1.日期字段不能直接與字符串常量進行比較:
需要採用.ToString('yyyy-MM-dd')函數,把日期轉換爲字符串進行比較:
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.計算日期差: (F_JD_Date1 - F_JD_Date2).Days
計算月份差: (F_JD_Date1 - F_JD_Date2).Months
計算年度差: (F_JD_Date1 - F_JD_Date2).Years
5.增加天數:F_JD_Date2=F_JD_Date1.AddDays(-1)
增加月份:F_JD_Date2=F_JD_Date1.AddMonths(-1)
增加年份:F_JD_Date2=F_JD_Date1.AddYears(-1)
進階應用
1.取每月第一天:FSTARTDate= FDate.AddDays(1-float((FDate.ToString("dd"))))
2.取每個月最後一天(複雜):FENDDate = FDate.AddDays(1-float((FDate.ToString("dd")))).AddMonths(+1).AddDays(-1)
長日期字段
1.長日期/時間/打印時間/
與具體的時間作比較:F_JD_Date.ToString('yyyy-MM-dd hh:mm:ss') = '2016-07-07 10:05:33'
2.與當前時間作比較: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'
【注意】因爲多語言文本字段是按照語言隔離控制的,所以需要使用.ToString()函數,轉換成純文本。
前置條件-單選下拉列表字段
下拉列表不爲空:F_JD_Combo<>null And F_JD_Combo<>'' And F_JD_Combo<>' '
下拉列表等XXX:F_JD_Combo=='XXX',XXX代表所查詢的枚舉項值
【注意】下拉列表不能用枚舉項名稱作爲前置條件
前置條件-分組字段
編碼:F_JD_Group <>null And F_JD_Group.FNumber==‘XXX’
名稱:F_JD_Group<>null And F_JD_Group.FName.ToString()=='XXX'
前置條件-複選框字段
判斷複選框字段勾選:FPayBox 或者 FPayBox==1 或者 FPayBoxtrue 或者 FPayBox==True
判斷複選框字段不勾選:FPayBox ==0 或者 FPayBoxfalse 或者 FPayBox==False
注意true,不要寫成ture
前置條件-單據狀態字段
單據狀態<>null and 單據狀態=='XXX',XXX代表所需要判斷的狀態值
前置條件-單據類型字段
單據類型爲空:單據類型==null or 單據類型=='' or單據類型==' '
單據類型不爲空:單據類型<>null and單據類型<>'' and單據類型<>' '
單據類型<>null And 單據類型.編碼== 'XXX'
前置條件-數值型字段
數量1>數量2 或者 數量1>0
四捨五入:小數2 = round (小數1,精度位數)
向下取整:小數2= int (小數1)
向上取整:小數2= int ( round (小數1+ 0.4999999999 ) )
前置條件-多類別基礎資料列表字段(比如往來單位類型)
多類別基礎資料列表==‘XXX’,
XXX代表所需要判斷的具體基礎資料英文標識:
①客戶:BD_Customer
②供應商:BD_Supplier
③員工:BD_Empinfo
④部門:BD_Departmnet
⑤其他往來單位:FIN_OTHERS
⑥組織架構:ORG_Organizations
⑦銀行:BD_BANK(最好能記住)
前置條件-多類別基礎資料字段(比如往來單位)
多類別基礎資料列表=='XXX' and 多類別基礎資料.FNumber=='XXX'
需要注意的是,多類別基礎資料因爲集合了多種基礎資料,只能設置共性的屬性作爲條件。不能取到某種基礎資料的特有屬性作爲條件。
如果一定要取特有屬性作爲條件,則需要添加基礎資料字段,設置實體服務規則取值。再以新加字段的特有屬性作爲條件。
是否有源單
判斷單據有源單:ISDRAW() 或者 ISDRAW()==true 或者 ISDRAW()==True 或者 ISDRAW()==1
判斷單據無源單:ISDRAW()==false 或者 ISDRAW()==False 或者 ISDRAW()==0
注意不可缺少(),注意不能使用isdraw/IsDraw,注意不能使用TRUE/FALSE
或者可以變通的用單據體的源單類型或者源單編號字段結合遍歷語句判斷是有有源單
是否已下推
判斷單據已經下推:ISPUSH ()或者ISPUSH ()==true或者ISPUSH ()==True或者ISPUSH ()==1
判斷單據未下推:ISPUSH ()==false或者ISPUSH ()==False或者ISPUSH ()==0
注意不可缺少(),注意不能使用ispush/IsPush,注意不能使用TRUE/FALSE
或者可以變通的取下游單據反寫的字段作爲條件
組織字段
組織<>null And 組織.編碼=='XXX'
組織==@currentorgid(當前登錄組織)
用戶/創建人/修改人/打印人字段
用戶<>null And 用戶.編碼=='XXX’
用戶==@userid(當前登錄用戶)
前置條件-基礎資料字段
1.基礎資料字段,F_JD_Base返回的是一個複雜對象 BaseFieldDynamicRow,包含了很多的屬性,不能與一個簡單常量進行比較。如 F_JD_Base == '資料名稱',達不到預期效果。需要明確的指定屬性與常量值進行比較:
2.內碼: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'
基礎資料字段.基礎資料屬性(比如申請部門.上級部門)
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.注意:需要在申請部門字段上做上級部門的屬性引用
基礎資料字段.輔助資料屬性(比如申請部門.部門屬性)
編碼:F_JD_Base<>null and F_JD_Base.FDeptProperty <>null and F_JD_Base. FDeptProperty ['Number'] == 'DP02_SYS'
基礎資料字段.分組屬性(比如申請部門.部門分組)
編碼: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'多級屬性引用作爲條件的
標識與綁定實體屬性的選擇
①F_JD_Base<>null and F_JD_Base.FNumber == ‘GW0001' FNumber取的是編碼的標識
②同樣可以寫作: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 取的是編碼的綁定實體屬性
④同樣可以寫作: F_JD_Base<>null and F_JD_Base.FProperty<>null and F_JD_Base.Fproperty['Number']== 'GW0001'
建議統一使用['Number']的格式
基礎資料屬性引用的作用歸納
①需要基礎資料字段做屬性引用,基礎資料屬性字段,纔可以選到被引用的屬性。
②實體服務規則/字段值更新事件的前置條件/賦值公式需要引用基礎資料屬性,否則會報錯
③工作流-流程設計器-流程線/(流程節點-審批動作-參與人方案)-高級
④預算控制規則-控制單據-控制維度-字段取值來源
【反例】過濾語句與憑證模板的(科目影響因素/覈算維度)取值不需要引用屬性
寫語句注意事項
1.符號的應用
①寫條件語句,等號用==;寫賦值語句用=;寫過濾語句用=
②不等號可以用<>,也可以用!=
③可以用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.能做實體服務規則不做字段值更新事件,原因如下:
①滿足條件即觸發,不需點擊觸發 ②配置工作量少(以A=B+C舉例)
③條件不滿足亦可配置服務 ④易於後續維護與排查
4.粘貼網頁/word/excel的語句到BOS編輯器,最好要通過txt文檔中轉,因爲網頁的語句可能會帶有格式,導致BOS不能識別。
5.實體服務規則/字段值更新事件:A=B+C,需要在前置條件設置B==B and C==C;並且需要勾選B與C兩個字段的“即時觸發字段值更新事件”
6.給單據體字段賦值,需要在單據體上設置實體服務規則,或者單據體字段的字段值更新事件。不能是單據頭的實體服務規則。
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'))
即時觸發字段值更新事件的作用
①爲字段值更新事件/實體服務規則的前置條件字段觸發前置條件。
②影響新增修改單據時,數值型字段彙總到上級字段的功能實時觸發更新。
③手工新增/修改單據時,在單據體底端實時統計數值型字段的彙總值。
④單選按鈕組字段作爲前置條件(包含字段值更新與實體服務規則),單選按鈕字段需要勾選該屬性才能生效。
【注意】自定義的字段,默認不勾選“即時觸發字段值更新事件”。
計數遍歷
len(filter(lambda x:x.FExpID<>null and x.FExpID.FName=='業務招待費', FEntity))>0
①len:計數; ②filter:過濾;③ lambda:遍歷;④ x:x. 固定寫法;⑤ FExpID:費用項目字段的標識;⑥ FExpID.FName:費用項目.名稱的標識 ;⑦ FEntity:費用報銷單的明細單據體的標識
語句大意:先使用lambda函數對FEntity單據體做遍歷操作,再使用filter函數,按照FExpID<>null and FExpID.FName=='業務招待費'作爲條件,將滿足條件的明細行過濾出來,最後len函數對滿足條件的明細行做計數統計,得到的數值與0做比較返回true或者false。
求和遍歷
FExpAmountSum=sum(map(lambda x:x.FExpenseAmount, FEntity)
① FExpAmountSum :單據頭彙總金額字段的標識; ② sum:求和;③ map:映射;④ lambda:遍歷;⑤ x:x. 固定寫法;⑥ FExpenseAmount:單據體費用金額字段的標識;⑥FEntity:費用報銷單的明細單據體的標識
語句大意:先使用lambda函數對FEntity單據體做遍歷操作,再使用map函數,將FExpenseAmount字段從明細行映射挑選出來組成一個新的集合;最後使用sum函數對集合裏面的所有元素做求和彙總,得到的數值賦值給FExpAmountSum字段。
求和遍歷 經典案例
【需求】報銷單申請報銷金額不能超過收票金額之和(不能超發票金額報銷)
【思路】在BOS爲報銷單設置保存校驗規則,用sum(map(lambda語句求和彙總收票單信息單據體裏的收票單金額,再與單據頭的申請報銷金額彙總字段,做單據合法性校驗大小。
【語句】sum(map(lambda x : (x.FRecInv.FSUMALLAMOUNT),FRecInvInfo))<= FReqReimbAmountSum
①FRecInvInfo:費用報銷單的收票信息單據體的標識;②FRecInv:收票信息單據體的收票單字段(基礎資料)的標識;③FRecInv.FSUMALLAMOUNT:收票單.價稅合計的標識。
求和遍歷 進階案例
【業務場景】求和彙總費用報銷單費用項目.名稱=業務招待費的明細行的費用金額。
【語句1】FExpAmountSum=sum(map(lambda x:x.FExpenseAmount if FExpID<>null and FExpID.FName=='業務招待費’ else 0 , FEntity)
語句大意:先使用lambda函數對FEntity單據體做遍歷操作,再使用map函數,按照FExpID<>null and FExpID.FName==‘業務招待費'作爲條件,將滿足條件的FExpenseAmount字段從明細行映射挑選出來(若不滿足條件, FExpenseAmount字段則爲0),組成一個新的集合;最後使用sum函數對集合裏面的元素做相加統計,得到的數值賦值給FExpAmountSum字段。
【語句2】FExpAmountSum=sum(map(lambda(x:x.FExpenseAmount ,filter(lambda(y:y.FExpID<>null and y.FExpID.FName=='業務招待費'), FEntity))))>0
語句大意:先使用lambda函數對FEntity單據體做遍歷操作,再使用filter函數,按照FExpID<>null and FExpID.FName==‘業務招待費'作爲條件,將滿足條件的明細行過濾出來;再使用lambda函數對這部分明細行做遍歷操作;再使用map函數,將 FExpenseAmount字段從明細行映射挑選出來,組成一個新的集合;最後使用sum函數對集合裏面的元素做相加統計,得到的數值賦值給FExpAmountSum字段。
拼接遍歷
FCausa = '\n'.join(o for o in (set(map(lambda x:(format(x.FRemark)), FEntity))))
①FCausa :單據頭事由字段的標識;②‘\n’:自動換行符;③.join:拼接;④ o for o in 固定寫法;⑤ set:去重; ⑥map:映射;⑦lambda:遍歷;⑧format:格式化字符串;⑨FRemark :單據體備註字段的標識;⑩ FEntity:費用報銷單的明細單據體的標識
語句大意:先使用format函數對先對FRemark做格式化操作,得到純文本。再使用lambda函數對FEntity單據體做遍歷操作,再使用map函數,將格式化後的字符串從明細行映射挑選出來,組成一個新的集合;再使用set函數,對集合裏的元素做去重操作,去重後按照原有的順序組成新的集合。最後使用join函數對集合裏面的元素,使用自動換行符'\n'做拼接操作,得到的字符串賦值給FCausa字段。
遍歷語句注意事項
適用範圍
1.支持單據頭實體服務規則
2.支持表單服務策略與校驗規則
3.不支持單據體實體服務規則
4.不支持字段值更新事件
多單據體遍歷
不支持同時遍歷多個單據體/子單據體
業務場景:同時對採購訂單明細單據體的價稅合計字段求和,同時對自定義的子單據體的金額字段求和,然後兩者作大小比較
遍歷語句 其他應用
基礎資料單據體字段
如需對基礎資料字段,單據體中屬性進行比較,也需要使用lambda進行遍歷:
【需求】判斷申請人(基礎資料員工)字段的任崗信息單據體上是否至少存在一行就任崗位.名稱=財務經理的明細行。
【語句】len(filter(lambda x:(x['Post']['Name'].ToString() =='財務經理' ), FStaffId.PostEntity)) >0
語句說明: ①FStaffId:申請人字段的標識;② PostEntity:基礎資料員工的員工任崗信息單據體的ORM實體名;③Post:基礎資料員工的員工任崗信息單據體的就任崗位字段的綁定實體屬性;④Name:Post的名稱屬性的綁定實體屬性
前置條件-多選類字段
1.多選基礎資料未錄入:len( FMulBase )<= 0 或者 FMulBase.Count<=0
多選基礎資料不爲空:len( FMulBase ) > 0 或者 FMulBase.Count>0
【注意】只能是Count,不能是count或者COUNT。
多選基礎資料字段包含編碼爲001的值:len(filter(lambda x:(x.Number=='001'),F_xkcw_MulBase))>0
多選基礎資料字段不包含編碼爲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.有選擇某一個枚舉項:多選下拉列表.find('枚舉項值')!=-1 沒有選擇某一個枚舉項:多選下拉列表.find('枚舉項值')==-1
是否都有勾選兩個枚舉項:多選下拉列表.find('枚舉項值a')!=-1 and 多選下拉列表.find('枚舉項值b')!=-1
是否至少有勾選兩個枚舉項其一:多選下拉列表.find('枚舉項值a')!=-1 or 多選下拉列表.find('枚舉項值b')!=-1
兩個枚舉項都不勾選:多選下拉列表.find('枚舉項值a')==-1 and 多選下拉列表.find('枚舉項值b')==-1
兩個枚舉項至少其一不勾選:多選下拉列表.find('枚舉項值a')==-1 or 多選下拉列表.find('枚舉項值b')==-1
過濾語句
過濾與高級過濾
1.基礎資料字段的特有功能 2.高級過濾的過濾條件可以直接粘貼語句的 3.均支持python與sql的語法
需求分析
【需求1】在採購增值稅專用發票的收票信息頁籤,選擇發票時,只能選擇到查驗狀態=已查驗的收票單
【語句】FISEXAMINE='1'
FISEXAMINE:收票單.查驗狀態的標識
【需求2】在採購增值稅專用發票選擇物料時,只能選擇到物料.默認供應商=單據頭.供應商的物料。
【語句】FDefaultVendor=GetValue(FSUPPLIERID)
FDefaultVendor:物料.默認供應商的標識
FSUPPLIERID:單據頭.供應商的標識
【需求5】費用報銷單,想要實現:當申請部門不爲空時,往來單位供應商F8,按照供應商.負責部門=申請部門做過濾;當申請部門爲空時,往來單位供應商F8,不做限制。
【語句用法】case when 條件語句 then 條件滿足時的過濾語句 else 條件不滿足時的過濾語句 end
特點:作用類同於if…else語句
【具體語句】FDeptId=CASE WHEN (GetValue(FRequestDeptID) <>0 and GetValue(FRequestDeptID) is not null) THEN GetValue(FRequestDeptID) ELSE FDeptID END
語句缺陷
【語句缺陷】1.不管前置條件是否滿足,基礎資料都必須使用FDeptId屬性作爲過濾的依據。若是想要實現當條件不滿足時,使用非FDeptId屬性作爲過濾的依據,就沒辦法實現。
2.因爲select與case when結合的語句,select子查詢語句只能返回1個值(select若不與case when結合,是可以返回多個值的),但是截圖裏的語句需要用到in,會返回多個值。所以該語句會報錯不能實現需求。
【需求6】當申請人字段(基礎資料員工)不爲空時,崗位信息字段(基礎資料崗位信息)F8開窗選擇(或者模糊查詢選擇、快速錄入)時,只可選擇申請人任崗的並且沒被禁用的崗位。否則,崗位信息字段能選到所有的崗位。
BOS設計器-業務字段-崗位字段的使用案例https://vip.kingdee.com/article/155401307799205376
【語句1】FPOSTID in (select FPOSTID from T_BD_STAFF where FEMPINFOID = GetValue(申請人字段的標識) 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(申請人字段的標識) AND t1.FFORBIDSTATUS = ‘A’)
【語句術語具體說明】
①T_ORG_POST:基礎資料崗位信息-單據頭實體崗位信息的表名。②FPOSTID:基礎資料崗位信息的主鍵字段名/崗位信息表T_ORG_POST的Id,也就是崗位信息本身。③FPOSTID:基礎資料員工任崗信息-就任崗位字段的字段名。④T_BD_STAFF:基礎資料員工任崗信息-單據頭實體員工信息的表名。⑤FEMPINFOID:基礎資料員工任崗信息-員工字段的字段名。⑥FFORBIDSTATUS:基礎資料員工任崗信息-禁用狀態字段的字段名。A是未禁用。
語句邏輯具體講解
【語句大意】1.員工任崗表T_BD_STAFF定義爲t1,崗位信息表T_ORG_POST定義爲t2。
2.根據t1.FPOSTID = t2.FPOSTID的匹配關係將t1表與t2表通過inner join(內拼接)語句拼接成一個新表。
3.在新表裏面按照條件t1.FEMPINFOID = GetValue(申請人字段的標識) AND FFORBIDSTATUS = 'A'過濾出符合條件的記錄明細。
4.在這些記錄裏面映射出FPOSTID字段作爲元素組成一個集合。
5.單據的崗位信息字段的屬性FPOSTID與該集合的元素用in語句做匹配過濾。
【需求7】當部門字段不爲空時,員工字段F8開窗選擇時,只可選擇在部門字段下勾了負責人崗位的崗位任崗的,並且沒被禁用的員工。否則,員工F8開窗選擇,能選到沒被禁用的所有員工。
【舉例】財務部 有三個崗位(財務總監,會計,出納),其中財務總監勾選負責人崗位。部門字段選擇財務部後,再選擇員工字段,只能選擇員工任崗爲財務總監的員工。
【語句】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')
修改枚舉項名稱
【需求】想要修改報銷單發票類型字段的普通發票的名稱,以及新增發票類型。
【錯誤做法】直接在BOS拓展報銷單,直接修改發票類型關聯的枚舉類型:發票類型(財務使用)的枚舉項名稱,與添加新的枚舉項
【後果】系統每一次升級,都會還原系統預置的枚舉項名稱,並且丟失新加的枚舉項信息
【正確做法】參照發票類型(財務使用) ,新建一個枚舉類型,與預置的枚舉項值保持一致(枚舉項名稱可以做修改),新增枚舉項。發票類型字段關聯新建的枚舉類型。
BOS經典案例分析
差旅費報銷單BOS打開報錯
【原理】出差申請單與費用申請單and差旅費報銷單與費用報銷單在BOS的構造上,是繼承與被繼承的關係,所以在費用申請單及其拓展所做的一切配置,都會同步配置在出差申請單上。反之則不然。
【具體原因】上述報錯截圖是由於先在出差申請單上添加了一個標識爲F_UVPC_Assistant1的字段。後來在費用申請單上,又人爲手工的添加了一個同樣標識爲F_UVPC_Assistant1的字段,由於繼承與被繼承的關係,在出差申請單上也會同步新增一個標識爲F_UVPC_Assistant1的字段。造成了出差申請單上字段標識重複。BOS重新打開出差申請單的拓展時,觸發了字段標識唯一性的校驗,從而會有上述的報錯。
兩個字段作比較
【需求】列表過濾想要進行兩個金額字段的比較,比如過濾出A字段不等於B字段的單據,如何實現?
【方法】需要BOS後臺爲字段A/字段B配置過濾比較符號集:200
【用途】①單據列表過濾
②數據規則授權
③憑證模板的分錄行生成條件
④選單條件策略
自動下推服務
1.審覈操作上自動下推服務
2.工作流的自動下推動作
3.子系統的管理參數
注意:三者只能擇其一,不能重複設置
注意:自動下推是整單下推的。不能以單據體字段作爲條件,控制只下推滿足條件的明細行。
作者:cq_zhengyilun
來源:金蝶雲社區
原文鏈接:https://vip.kingdee.com/article/422885285635266304?productLineId=1
著作權歸作者所有。未經允許禁止轉載,如需轉載請聯繫作者獲得授權。