二开案例.表达式.将单据体满足条件的基础资料字段的编码合并到单据头字段

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:2

二开案例.表达式.将单据体满足条件的基础资料字段的编码合并到单据头字段

【应用场景】将单据体满足条件的基础资料字段的编码合并到单据头字段。

【案例演示】采购订单,将单据体中的所有物料分组编码等于001的物料的编码合并后,赋值给单据头的文本字段。

【实现步骤】

<1>BOSIDE扩展采购订单,单据头新增一个文本字段。

<2>单据体的物料编码字段,新增引用属性【物料分组】。

<3>单据头上新增实体服务规则,如下图所示,保存元数据,开发完毕。

前置条件:

FPOOrderEntry<>null AND FPOOrderEntry.Count>0 AND FMaterialId<>null AND len(filter(lambda row: row.FMaterialId<>null and row.FMaterialId.ActiveObject["MaterialGroup"]<>null and row.FMaterialId.ActiveObject["MaterialGroup"]["Number"]=='001', FPOOrderEntry))>0

前置条件为真时的计算公式:

F_Jac_Text = ','.join(o for o in (map(lambda x:x.FMaterialId.FNumber,filter(lambda row: row.FMaterialId<>null and row.FMaterialId.ActiveObject["MaterialGroup"]<>null and row.FMaterialId.ActiveObject["MaterialGroup"]["Number"]=='001', FPOOrderEntry))))

前置条件为假时的计算公式:

F_Jac_Text = ''




现在可以登录业务站点,打开采购订单编辑界面,单据体中录入物料分组为001的物料,验证一下实体服务规则的控制效果啦。



【扩充知识】

<1>xxx.join():使用分隔符将多个文本拼接成一个文本。

<2>map():获取集合中的元素的某个属性组成的新的集合。

<3>filter():获取满足lambda表达式指定的条件的元素的新的集合。

<4>len():计算集合的长度。

<5>如果要找多个物料分组的编码,可将表达式中的

row.FMaterialId.ActiveObject["MaterialGroup"]["Number"]=='001'

改为

row.FMaterialId.ActiveObject["MaterialGroup"]["Number"] in ('001','002','003')

更多Python函数用法请自行百度。

<6>表达式取值的依据来自于单据数据包的内部树形结构。

例如,采购订单的订单明细中的某一行数据的物料的物料分组的编码的存储结构如下图。














【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696

二开案例.表达式.将单据体满足条件的基础资料字段的编码合并到单据头字段

【应用场景】将单据体满足条件的基础资料字段的编码合并到单据头字段。【案例演示】采购订单,将单据体中的所有物料分组编码等于001的物料...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息