二开案例.表达式.获取单据体首行的某个字段的值

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

二开案例.表达式.获取单据体首行的某个字段的值

【应用场景】获取单据体首行的某个字段的值。

【案例演示】采购订单,获取单据体首行的物料的名称,并赋值给单据头的文本字段。

【实现步骤】

<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

二开案例.表达式.获取单据体首行的某个字段的值

【应用场景】获取单据体首行的某个字段的值。【案例演示】采购订单,获取单据体首行的物料的名称,并赋值给单据头的文本字段。【实现步骤】...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息