
# 借鉴 @Tracy_Huang 老师的代码实现
- 传送门: **[如何将生产订单二开字段携带至下级订单上](https://wenku.my7c.com/article/25976?productLineId=1)**
# 目前不足的地方
## 就是无法获取到FirstOrDefault扩展函数,所以代码做了一些调整!

# Python代码实现
```python
import clr
clr.AddReference("System")
clr.AddReference("System.Core")
clr.AddReference("Kingdee.BOS")
clr.AddReference("Kingdee.BOS.App")
clr.AddReference("Kingdee.BOS.Core")
clr.AddReference("Kingdee.BOS.DataEntity")
clr.AddReference("Kingdee.BOS.ServiceHelper")
clr.AddReference("Kingdee.k3.Core")
#引入命名空间
from System import *
from System.Linq import *
from Kingdee.BOS import *
from Kingdee.BOS.Util import *
from Kingdee.BOS.Core.Bill.PlugIn import *
from Kingdee.BOS.Orm.DataEntity import *
from Kingdee.K3.Core.MFG.EntityHelper import *
from Kingdee.BOS.ServiceHelper import *
#实现 携带数据到下级订单
def AfterCreateModelData(e):
obj = this.View.Model.DataObject;
moEntryDatas = obj["TreeEntity"]; #获取分录
if moEntryDatas is None:
this.View.ShowMessage("TreeEntity不存在");
srcBillType = FirstOrDefault(moEntryDatas)["SrcBillType"].ToString();
if srcBillType == "PRD_MO":
moId = FirstOrDefault(moEntryDatas)["SrcBillId"].ToString(); #源单内码
moData = BusinessDataServiceHelper.LoadSingle(this.Context, moId, this.View.Model.BusinessInfo.GetDynamicObjectType()); #源单数据包
srcMoEntryDatas = moData["TreeEntity"]; #源单分录数据
for moEntryData in moEntryDatas:
moEntryId = moEntryData["SrcBillEntryId"].ToString();
srcMoEntryData = FirstOrDefault(Where(srcMoEntryDatas,lambda w: w["ID"].ToString()==moEntryId))
if srcMoEntryData is not None:
entryText = srcMoEntryData["F_SB"].ToString(); #二开表体字段的属性名
row = int(moEntryData["Seq"]);
this.View.Model.SetValue("F_SB", entryText, row - int(1)); #二开表体字段的字段名
def FirstOrDefault(col, fun = lambda x: True):
return Enumerable.FirstOrDefault[object](col, Func[object, bool](fun))
def Where(col, fun):
return Enumerable.Where[object](col, Func[obj