实体服务规则之设计规范(1)原创
金蝶云社区-汽修工
汽修工
76人赞赏了该文章 4,380次浏览 未经作者许可,禁止转载编辑于2022年08月18日 16:47:35
summary-icon摘要由AI智能服务提供

本文概述了多种数据字段(文本、多语言文本、数值、复选框、下拉列表、日期、基础资料、辅助资料等)的条件判断和赋值方法。具体涵盖了如何判断字段是否为空、包含特定字符、等于某个值、以及如何对这些字段进行赋值,包括使用固定字符串、变量值、枚举项、日期计算等。此外,还涉及了多语言文本字段、基础资料字段和辅助资料字段的特殊处理,包括如何判断字段内容、如何根据属性进行比较,以及如何进行多层级条件判断。文本还提及了Python中一些常用的字符串和列表处理函数,如`in`、`filter`、`len`、`find`、`join`、`strip`、`index`、`map`、`eval`、`min`、`max`、`all`、`any`、`sum`、`format`等,但主要聚焦于在特定数据操作场景下的应用。

  • 本文

一:条件判断

(1)判断文本是否为空:文本=null Or 文本='' Or 文本=' '

(2)判断文本不为空:文本<>null And len(文本.strip())>0

(3)判断文本字段里面是否包含某个字符:find('XXX')>=0,XXX代表所需要判断的具体文本

(4)判断文本字段是否左包含、右包含某个字符:文本[0:2] = 'AA'

(5)判断文本的值:文本='XXX',XXX代表所需要判断的具体文本


二:赋值

(1)设置为固定字符串:文本字段='XXXX'

(2)设置为基础资料名称:文本字段= FBase.FName

(3)设置文本字段FText1为固定字符+整数字段值

FText1 ="kingdee_" + str(FInteger1)

(4)设置文本字段为多语言字段值

FText1 =str(FMULLANGTEXT)

(5)设置文本字段为整数1,整数2相连,并用分号隔开;如 整数字段值分别为8,10,结果为"8;10"

FText1=';'.join(x for x in ( str(FInteger1), str(FInteger2)))

  • 多语言文本

多语言文本字段,在内存中,并不是简单的字符串,而是一个复杂对象LocalValue类型,其中包含了各种语言下的字段内容。


一:条件判断

(1)判断多语言文本是否为空:F_JD_MulLangText=null or str(F_JD_MulLangText) = ''

(2)查找多语言文本内容:

str(F_JD_MulLangText) = '文本内容'

str(F_JD_MulLangText).find('文本内容') >= 0


二:赋值

F_JD_MulLangText = '赋值内容'


  • 数值字段

常见数值字段使用示例:

(1)数值比较:F_KD_Decimal  > 1

(2)小数,四舍五入:F_KD_Decimal1  = round ( F_KD_Decimal )

(3)小数,向下取整:F_KD_Decimal1 = int ( F_KD_Decimal )

(4)小数,向上取整:F_KD_Decimal1 = int ( round ( F_KD_Decimal + 0.4999999999 ) )

  • 复选框

一:条件判断

(1)判断是否选中:F_KD_CheckBox1 = true

(2)判断未选中:F_KD_CheckBox1 = false


二:赋值

(1)设置为选中:F_JD_CheckBox1 = true

(2)设置为未选中:F_JD_CheckBox1 = false

  • 下拉列表

下拉列表字段存储的是枚举项,显示的是枚举名称;

如F_KD_Combo1绑定的枚举类型为价格类型,有两个枚举项('1' : 到岸价; '2' : 出厂价)


一:条件判断

(1)判断下拉是否未选:F_KD_Combo1 = null

(2)判断是否选中“到岸价”:F_KD_Combo1 = '1'


二:赋值

(1)设置选中“出厂价”:F_KD_Combo1 = '2'

  • 日期

一:条件判断

(1)大于某个固定日期:FDate1.ToString('yyyy-MM-dd')>='2021-05-01'

(2)两个元素类型为日期字段的比较:FDate1 > FDate2

(3)判断日期是否大于今天:FDate1 > @currentshortdate

注:@currentshortdate是系统变量,常用的日期类系统变量还有:

@currentshortdate : 今天,短日期,不包含时间

@currentlongdate : 此时,长日期,包含时间

@maxdate : 系统最大时间

@mindate : 系统最小时间


二:赋值

(1)设置固定日期:FDate1='202105-05'

(2)日期的计算,如结束日期为开始日期+1天:

FEndDate = FStartDate.AddDays(1)

同理:增加月份:FStartDate.AddMonths(1)

增加年份:FStartDate.AddYears(1)

(3)计算日期差:(FDate1 - FDate2).Days

(4)时间间隔,如2个日期的时间间小时数:

FText = ( FEndDate - FStartDate).TotalHours

(5)获取日期的月份、天:

FText =FDate1.Date.Month

FText =FDate1.Date.Day

(6)获取日期是对应的星期几

FText = '星期'+str(int(FDate1.DayOfWeek))

(7)取本月最后一天:

FEndDate = FStartDate.AddDays(1-float((FStartDate.ToString("dd")))).AddMonths(+1).AddDays(-1)

(8)取本月第一天日期:

日期字段 = @currentshortdate.AddDays((1-float(@currentshortdate.ToString("dd"))))

  • 基础资料

基础资料字段,返回的是一个复杂对象BaseFieldDynamicRow,包含了很多的属性,不能与一个简单常量进行比较。


如 F_JD_Base1 = '资料名称',达不到预期效果。

需要明确的指定属性与常量值进行比较:

FBase1.Id = 100001

FBase1.FNumber = 'GW0001'

FBase1.FName = '采购员'


多选基础资料未录入

len( FMulBase ) > 0 


获取基础资料名称

FText1 = FBase1.FName 


获取基础资料编码

FText1 = FBase1.FNumber


  • 辅助资料

一:条件判断

(1)基于辅助资料.内码判断:

FAssistant1 <> null  AND FAssistant1.Id = '5f6172d239b2e3'

或:

FAssistant1 <> null  AND FAssistant1.ActiveObject["Id"] = '5f6172d239b2e3'

(2)基于辅助资料.编码判断:

FAssistant1 <> null  AND FAssistant1.FNumber = '001'

或:

FAssistant1 <> null  AND FAssistant1.ActiveObject["FNumber"] = '001'

(3)基于辅助资料.名称判断:

FAssistant1 <> null  AND FAssistant1.FDataValue = '一级'

或:

FAssistant1 <> null  AND FAssistant1.ActiveObject["FDataValue"].ToString() = '一级'

或:

FAssistant1 <> null  AND str(FAssistant1.ActiveObject["FDataValue"]) = '一级'


二:多层级条件判断,如

(1)基于供应商.供应商等级.内码判断:

FSupplierId  <> null AND FSupplierId.FSupplierGrade <> null AND FSupplierId.FSupplierGrade.Id = '5f6172d239b2e3'

或:

FSupplierId  <> null AND FSupplierId.FSupplierGrade <> null AND FSupplierId.FSupplierGrade["Id"] = '5f6172d239b2e3'

(2)基于供应商.供应商等级.编码判断:

FSupplierId  <> null AND FSupplierId.FSupplierGrade <> null AND FSupplierId.FSupplierGrade.Number = '001'

或:

FSupplierId  <> null AND FSupplierId.FSupplierGrade <> null AND FSupplierId.FSupplierGrade["Number"] = '001'

(3)基于供应商.供应商等级.名称判断:

FSupplierId  <> null AND FSupplierId.FSupplierGrade <> null AND FSupplierId.FSupplierGrade.Name.ToString() = '一级'

或:

FSupplierId  <> null AND FSupplierId.FSupplierGrade <> null AND str(FSupplierId.FSupplierGrade.Name) = '一级'

或:

FSupplierId  <> null AND FSupplierId.FSupplierGrade <> null AND FSupplierId.FSupplierGrade["Name"].ToString() = '一级'

或:

FSupplierId  <> null AND FSupplierId.FSupplierGrade <> null AND str(FSupplierId.FSupplierGrade["Name"]) = '一级'


  • Python函数

  1. in

  2. filter

  3. len

  4. find

  5. join

  6. strip

  7. index

  8. map

  9. eval

  10. min

  11. max

  12. all

  13. any

  14. sum

  15. format



图标赞 76
76人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!