二开案例.表达式.将单据体满足条件的基础资料字段的编码合并到单据头字段
【应用场景】将单据体满足条件的基础资料字段的编码合并到单据头字段。
【案例演示】采购订单,将单据体中的所有物料分组编码等于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
二开案例.表达式.将单据体满足条件的基础资料字段的编码合并到单据头字段
本文2024-09-23 04:20:46发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164709.html
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf