表单插件,报索引超出了数据界限
金蝶云社区-bin2014
bin2014
0人赞赏了该文章 769次浏览 未经作者许可,禁止转载编辑于2015年08月27日 10:47:59

情景:

01.在基础资料客户-基本信息属性中增加了一个整数型“A字段”。
02.在销售订单-表头的-客户字段中引用了这个“A”字段,然后在表头-增加了一个基础资料的属性字段“B字段”,关联到客户引用的"A字段"。
03.这个“A字段”,后台有触发器,是实时更新的。
在做销售订单时输入客户后,发现带“B字段”的值不是最新的,好像取了缓存的。复制销售订单时,“B字段”也取的不是实时的客户上的“A字段”值。
现在想做销售订单时输入客户或是复制销售订单时,能根据客户带出实时的“A字段”值。于是做了下面的一个插件,但是报错,请高手帮忙看看或是帮写一个。


插件代码如下:
注:A字段为,客户表头的FF_JIFEN
B字段为,销售订单表头的FFFF_TOTALJIFEN
namespace HXSM.Kingdee.SCM.salorderEdit.Business.PlugIn
{
public class CustomerEdit : AbstractBillPlugIn
{
public override void DataChanged(DataChangedEventArgs e)
{
switch (e.Field.Key)
{
case "FCustId":
//根据客户ID带出"累计积分"
object CustId = this.View.Model.GetValue("FCustId_ID");//获取客户ID
//获取当前单据客户ID的完整数据包
DynamicObject[] objs = BusinessDataServiceHelper.Load(this.Context, new object[] {CustId},
(MetaDataServiceHelper.Load(this.Context, "BD_CUSTOMER") as FormMetadata).
BusinessInfo.GetDynamicObjectType());
//获取基础资料字段元数据描述信息
BaseDataField baseDataField = this.View.BusinessInfo.GetField("FFFF_TOTALJIFEN") as BaseDataField;

//方法01:把当前客户的"总积分"字段值,赋值给当前单据的"FFFF_TOTALJIFEN"字段
this.View.Model.SetValue("FFFF_TOTALJIFEN", objs[0]["FF_jifen"]);
//方法02:同上
//this.View.Model.SetValue("FFFF_TOTALJIFEN",objs[0]);
break;


}
}
}