我添加了三个自定义小数?在申请主数据(RQ302000)上的字段,需要使用行基总成本/主总成本比率将这三个字段的总值按比例分配到每个申请行,并将结果显示为每行的附加成本(也是自定义小数?字段) 。 当这三个新字段更新时,应该触发此计算。
我不明白的是:
1.应该修改哪些事件与此需求相关
2.如果是主场上的事件,如何从线路扩展栏中获取值
3.如果它是事件在线字段,如何从主扩展字段
答案 0 :(得分:1)
<强> 1。 “应该修改哪些与此需求相关的事件?”
在类似于你的场景中,应该使用RowInserted,RowUpdated和RowDeleted处理程序的组合:
RowInserted 事件处理程序用于实现以下业务逻辑:
RowUpdated 事件处理程序用于实现以下业务逻辑:
RowDeleted 事件处理程序用于实现以下业务逻辑:
还可以考虑使用FieldUpdated处理程序:
FieldUpdated 事件处理程序用于在以下情况下实现与DAC字段值的更改相关联的业务逻辑:
请参阅帮助中的 API参考 - &gt; Acumatica框架 - &gt; API参考 - &gt; Event Model和T200开发人员课程,了解有关Acumatica Framework事件模型的其他信息和示例。
<强> 2。 “如果它是主场上的事件,如何从线路扩展字段获取值?”
在Acumatica中,自定义字段通过DAC扩展声明。要访问DAC扩展对象,可以使用以下方法:
每个DAC实例可用的GetExtension()泛型方法:
ContactExt contactExt = curLead.GetExtension<ContactExt>();
在非通用PXCache类中声明的GetExtension(object)泛型方法
ContactExt contactExt = Base.LeadCurrent.Cache.GetExtension<ContactExt>(curLead);
或
ContactExt contactExt = Base.Caches[typeof(Contact)].GetExtension<ContactExt>(curLead);
PXCache泛型类的GetExtension(object)静态泛型方法
ContactExt contactExt = PXCache<Contact>.GetExtension<ContactExt>(curLead);
要从行扩展字段获取值,您应首先从Lines数据视图中选择记录,然后使用上述方法之一访问DAC扩展类的实例,例如:
foreach(RQRequisitionLine line in Base.Lines.Select())
{
RQRequisitionLineExt lineExt = line.GetExtension<RQRequisitionLineExt>();
}
第3。 “如果它是事件在线字段,如何从主扩展字段获取值”
这很简单:上述相同的3种方法,这次应用于主文档数据视图的Current属性,例如:
Base.Document.Current.GetExtension<RQRequisitionExt>();