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