
@[TOC](目录)
### 背景
在采购订单付款计划上新增了一个自定义字段,按物料明细付款时,想根据对应的物料行号将其携带到下游入库单的明细信息中,由于单据转换没办法配置多对一实体映射携带,因此可用二开方式实现。单据转换的字段映射中的自定义公式中的明细信息是不可迭代的对象,并且在其中获取不到付款计划实体的数据,因此考虑二开python插件实现。
### 步骤
1. 采购订单付款计划新增自定义字段

2. 采购入库单明细信息新增对应自定义字段

3. 采购订单到采购入库单新增python插件处理跨实体字段携带

### python脚本
```python
import clr
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
from Kingdee.BOS import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.BusinessFlow.PlugIn import *
from Kingdee.BOS.Core.Base import *
from Kingdee.BOS.Core.Metadata import SelectorItemInfo
_SourcesData = {}#定义全局变量用来存放采购订单付款计划数据
def OnQueryBuilderParemeter(e):
e.SelectItems.Add(SelectorItemInfo("FMATERIALSEQ"))#引用付款计划中的物料行号字段
e.SelectItems.Add(SelectorItemInfo("F_SXIM_Text"))#引用付款计划中的自定义字段
def OnGetSourceData(e):
global _SourcesData#加载全局变量
if e.SourceData != None and e.SourceData.Count > 0:
for data in e.SourceData:
k = str(data["FMATERIALSEQ"])
v = str(data["F_SXIM_Text"])
_SourcesData[str(k)] = str(v)#将付款计划中的物料行号和自定义字段以键值对类型存储
def OnGetDrawSourceData(e):
global _SourcesData#加载全局变量
if e.S