2020R2 不再定义 CustomerMaint 视图

2020R2 CustomerMaint Views no longer defined

我有一个正在为 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<CustomerMaint.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);