问题描述
我有一个针对Acumatica 2020R2进行升级的自定义项,该自定义项通过CustomerMaint图实例与客户进行了各种工作。
从2020R2开始,看来各种视图的实现方式均已更改。在屏幕上的控件上执行“检查元素”仍指示相同的视图名称,但查看CodeRepository \ CustomerMaint.cs,尚不清楚如何实现这些视图。
'CustomerMaint' does not contain a deFinition for 'Contacts' ...
'CustomerMaint' does not contain a deFinition for 'DefContact' ...
'CustomerMaint' does not contain a deFinition for 'Addresses' ...
'CustomerMaint' does not contain a deFinition for 'DefAddress' ...
'CustomerMaint' does not contain a deFinition for 'DefLocation' ...
'CustomerMaint' does not contain a deFinition for 'DefLocationContact' ...
如何在2020R2中访问这些视图和DAC对象?
解决方法
在2020 R2之前的Acumatica版本中,CustomerMaint
继承自BusinessAccountGraphBase
。从2020 R2开始,它直接从PXGraph
派生,支持客户维护所需的许多共享视图已移至扩展名,这些扩展名已映射到图的属性,例如DefContactAddressExt,DefLocationExt,ContactDetailsExt,LocationDetailsExt。 >
这些扩展公开了您所需的视图。下面是一个如何从图形扩展中检索当前地址的示例:
var ext = Base.GetExtension<DefContactAddressExt>;
var address = ext.DefAddress.Current
,
接受的答案对我不起作用,但是通过使用外键API(在18R1 +中可用),这变得非常容易:
Contact defContact = Customer.FK.ContactInfo.FindParent(Base,Base.CurrentCustomer.Current);
Address defAddress = Customer.FK.Address.FindParent(Base,Base.CurrentCustomer.Current);
Location defLocation = Customer.FK.DefaultLocation.FindParent(Base,Base.CurrentCustomer.Current);
Contact defLocContact = Location.FK.ContactInfo.FindParent(Base,defLocation);