不再定义2020R2 CustomerMaint视图

问题描述

我有一个针对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);