生产订单中使用SetValue对BOM字段赋值不起作用
金蝶云社区-云社区用户AW080892
云社区用户AW080892
0人赞赏了该文章 1039次浏览 未经作者许可,禁止转载编辑于2017年11月17日 21:41:42

在生产订单单据体增加了设备字段,物料清单单据头也增加了设备字段,想实现在生产订单中选取了物料和设备后自动带出 物料和设备相同的物料清单因此在datachange事件中写了如下代码

public override void DataChanged(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.DataChangedEventArgs e)
{
base.DataChanged(e);
if (e.Key == "FMaterialId" || e.Key == "FMachine")
{
int FMaterialID = 0;
int FMachineID = 0;
if (this.Model.GetValue("FMaterialId") == null)
return;
FMaterialID = Convert.ToInt32(((DynamicObject)this.Model.GetValue("FMaterialId"))["ID"]);
if (this.Model.GetValue("FMachine") != null)
FMachineID = Convert.ToInt32(((DynamicObject)this.Model.GetValue("FMachine"))["ID"]);

DataSet ds = Kingdee.BOS.ServiceHelper.DBServiceHelper.ExecuteDataSet(this.Context, string.Format(" exec proc_GetBOM {0},{1}", FMaterialID, FMachineID));
this.Model.SetValue("FBomId",Convert.ToInt32( ds.Tables[0].Rows[0]["FBOMID"]), e.Row);
this.View.UpdateView("FBomId", e.Row);
}

}

执行后发现赋值不了,跟踪代码发现直行到SetValue后,是赋值成功了的,因为赋值后他会再2次触发BOM字段的 datachange事件,在第一次触发是能发现是我写入的值,第二次变成null了;

然后我直接在生产订单上增加按钮,通过点击按钮使用SetValue方法是能成功对BOM字段赋值的!

生产订单本身自带了6个标准产品的插件,里面也有触发datachange事件,是否我们开发的插件和标准插件有冲突

怎么解决呢?