
@[TOC](目录)
### 1、用DataChanged值更新事件同步修改值
在DataChanged事件中通过一个`if`语句判断是否是【付款条件】和指定的"【自定义】"字段发生变化
### 2、数据操作
1. 获取付款条件字段的数据包
2. 再判断数据包中的“FPAYMENTMETHOD”属性是否为“3”,为“3”表示是按物料明细付款
3. 分别获取明细信息和付款计划的数据包
4. 判断它们是否为非空。非空则遍历明细信息数据包
5. 用一个变量来存储明细信息数据包中的“Seq”属性值
6. 再嵌套一个循环遍历付款计划数据包
7. 判断明细信息的Seq与付款计划的“FMATERALSEQ”是否相等,相等则将明细信息中的“【自定义_明细信息】”字段赋值给付款计划“【自定义_付款计划】”
8. 最后调用this.View.UpdateView
### 3、Python案例代码
```python
import clr
clr.AddReference('mscorlib')
from System import *
def DataChanged(e):
#监控是不是指定字段发生改变
if e.Field.Key == "FPayConditionId" or e.Field.Key == "FPrice_Test" or e.Field.Key == "FDecimal_Test":
UpdatePriceAndDecimal()
def UpdatePriceAndDecimal():
payCondition = this.View.Model.GetValue("FPayConditionId")#表头付款条件
if not payCondition is None:
if payCondition["FPAYMENTMETHOD"] == "3":#付款条件按物料明细付款
poOrderEntry = this.View.Model.DataObject["POOrderEntry"]#明细信息页签
fIinstallmentEntry = this.View.Model.DataObject["FIinstallment"]#付款计划页签
if not poOrderEntry is None and poOrderEntry.Count > 0 and not fIinstallmentEntry is None and fIinstallmentEntry.Count > 0:
for itemPOEntry in poOrderEntry:
seqPO = itemP