K3Cloud BOS设计 值更新 字段拼接到文本字段
单据体字段 拼接到文本字段
脚本
- 首先满足单据体不为空,以及 其他条件
- 然后把单据体中,符合条件的集合,拼接到单据头的备注中
FRemark = '' if FIS_ALLOW_SOFT != true and FEntity <> null AND FEntity.Count > 0 else ','.join(x for x in (map(lambda n:n.FMaterialType.FName , filter(lambda r:r.FMaterialType<>null,FEntity))))
多选基础资料 拼接到文本字段
值更新配置
选中字段,【值更新事件】→【新增服务】→服务类型选择【计算定义公式的值并填写到指定列】
FAuditUser = ','.join(map(lambda x:x.Name, FUSERNAME1))
用','.join()
语法进行拼接 到FAuditUser
文本字段中
FUSERNAME1
是多选基础资料,审核人,
表达式测试
如果不知道
FUSERNAME1
返回字段内容,可以通过【表达式测试】,把字段拷贝到【表达式】中,然后选择所在实体,并在【审核人】字段中选中多人,点击【测试】,执行结果就会显示数据内容及字段,即可在lambda
表达式中输入想要的字段
【表达式测试】中可以直接测试FAuditUser = ','.join(map(lambda x:x.Name, FUSERNAME1))
赋值
关键 语法
1、三目运算符
print('赋值前输出')
remark = ''
msg = "结果:remark 不是空字符"
msg1 = "结果:remark 是空字符"
res = msg1 if remark == '' else msg
print(res)
print('赋值后输出')
remark = '您好'
res = msg1 if remark == '' else msg
print(res)
输出结果:
2、join()
将序列中的元素以指定的字符连接生成一个新的字符串
# join
arr = ["abc", "db", "cc", "df", "ll", "ob", "fb"]
str = ',' # 将集合中的内容用逗号拼接
res = str.join(arr)
print(res)
3、map()
arr中的每个元素都调用 map_fun 函数,并返回调用函数后的 映射
def map_fun(x):
return x + "_Q"
if __name__ == '__main__':
arr = ["abc", "db", "cc", "df", "ll", "ob", "fb"]
# arr中的每个元素都调用 map_fun 函数,并返回调用函数后的 映射
s = map(map_fun, arr) # 调用 map_fun,元素拼接 _Q
m = list(s) # 用list转换为列表
print(f'map 处理后,转list 结果:\r\n {m}')
4、lambda ,filter()
sum = lambda x: x + 2 # lambda 作为赋值给变量,变量作为函数
print(sum(1)) # 输出 3
# 筛选集合中元素不等于"" 的元素
arr = ["abc", "db", "cc", "df", "ll", "", "ob", "fb", ""]
r = filter(lambda x: x != "", arr)
print(list(r)) # 用list转换为列表