
文主要讲述如何将缺料分析子项明细的字段携带到缺料清单汇总表
## 需要提前了解的知识点
1.操作插件的开发(本文使用python操作插件作为案例,有编译条件的可以使用.net作为开发语言,一样的效果)
2.缺料分析单与缺料分析子项明细的元数据模型关系
## 样例
### 我希望在缺料分析单的缺料清单带入子项明细的订单编号信息。
#### 需要做的事情
1.缺料清单加入需要携带的目标字段(跟缺料分析子项明细的字段类型,字段的元数据类型需要保持一致)。比如下图所示,扩展缺料分析单,在缺料清单加入F_ISVCODE_MOBILLNO,元数据类型参考缺料分析子项明细的订单编号字段


2.检查缺料分析子项明细对应字段所在的物理表,确定是否在拆分表。当前缺料分析子项明细的订单编号在默认表下为T_PRD_PMPPBOMENTRY。如果字段是在拆分表上,则该字段对应的物理表为表名+拆分表后缀。如调拨数量则在_A拆分表上,物理表全名为T_PRD_PMPPBOMENTRY_A

3.扩展缺料分析单,于操作列表>保存操作>插件列表>注册Python插件加入二次开发插件,实现功能。有编译部署条件的朋友可以用.net实现,注册插件也是一样的。


4.在插件的SQL里加入需要更新的字段,具体修改在于SQL语句中U2加入子项明细字段的取数列默认表是([S1.字段名],拆分表为[S2.字段名]),更新语句加入U2更新U1的子句。以下附上本次样例的插件脚本以作参考
#### 插件代码
```python
import clr
clr.AddReference('Kingdee.BOS.ServiceHelper')
from Kingdee.BOS.ServiceHelper import DBServiceHelper
from Kingdee.BOS import SqlParam
from Kingdee.BOS import KDDbType
from System.Collections.Generic import List
def AfterExecuteOperationTransaction(e):
sql="MERGE INTO T_PRD_LACKENTRY U1 USING(SELECT S.FID,S.FSUMMARYID,S.FENTRYID,S1.FMOBILLNO FROM (SELECT T1.FID,T2.FSUMMARYID,MIN(T1.FENTRYID) AS FENTRYID FROM T_PRD_PMPPBOMENTRY T1 INNER JOIN T_PRD_PMPPBOMENTRY_A T2 ON T1.FENTRYID = T2.FENTRYID and t1.fid = @lFId GROUP BY T1.FID,T2.FSUMMARYID) S INNER JOIN T_PRD_PMPPBOMENTRY S1 ON S.FENTRYID = S1.FENTRYID INNER JOIN T_PRD_PMPPBOMENTRY_A S2 ON S.FENTRYID = S2.FENTRYID) U2 ON U1.FID = U2.FID AND U1.FSUMMARYID = U2.FSUMMARYID WHEN MATCHED THEN UPDATE SET U1.F_ISVCODE_MOBILLNO = U2.FMOBILLNO;"
para = SqlParam('@lFId',KDDbType.Int64,e.DataEntitys[0]['Id'])
pls = List[SqlParam]()
pls.Add(para)
DBServiceHelper.Execu