二开案例.表达式.获取单据体首行的某个字段的值
【应用场景】获取单据体首行的某个字段的值。
【案例演示】采购订单,获取单据体首行的物料的名称,并赋值给单据头的文本字段。
【实现步骤】
<1>BOSIDE扩展采购订单,单据头新增一个文本字段。
【实现方案1:直接定位到单据体的指定行】
在单据头上新增实体服务规则,如下图,保存元数据,开发完毕。
前置条件:
FMaterialId <> null AND FPOOrderEntry <> null AND FPOOrderEntry.Count>0
计算公式:
F_Jac_Text = (FPOOrderEntry.TargetObjects[0].FMaterialId.FName if (FPOOrderEntry.TargetObjects[0].FMaterialId<>null) else '')
【实现方案2:遍历单据体后获取指定行】
在单据头上新增实体服务规则,如下图,保存元数据,开发完毕。
前置条件:
FMaterialId <> null AND FPOOrderEntry <> null AND FPOOrderEntry.Count > 0 AND len(filter(lambda row: row.ActiveObject["Seq"]==1, FPOOrderEntry)) > 0
计算公式:
F_Jac_Text = (filter(lambda row: row.ActiveObject["Seq"]==1, FPOOrderEntry)[0].FMaterialId.FName if (filter(lambda row: row.ActiveObject["Seq"]==1, FPOOrderEntry)[0].FMaterialId<>null) else '')
此方案的实现依赖单据体的序号列,如果单据体没有序号列,那就要找其他的替代列来定位首行。
现在可以登录业务站点,打开采购订单编辑界面,单据体中录入物料,验证一下实体服务规则的控制效果啦。
【扩充知识】
<1>表达式引擎封装单据体数据包时,采用的是懒加载的模式(LazyCollection),默认需要遍历整个单据体数据包才能访问到某一行数据。
<2>通过访问单据体数据包的TargetObjects属性,可以直接访问到某一行数据。
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.表达式.获取单据体首行的某个字段的值
本文2024-09-23 04:20:51发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164717.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