图扩展被标记为[PXOverride],但在PXGraph中没有找到具有该名称的原始方法

graph extension is marked as [PXOverride], but the original method with such name has not been found in PXGraph

我需要调整供应商屏幕上 Location.VCashAccountID 字段的一些字段属性 - AP303000。当我将下面的代码放入自定义 DLL 时,它编译正常并且屏幕上没有明显的问题。但是,当我尝试发布包含 DLL 的自定义项目时,出现错误。

代码:

 public class VendorMaintDefLocationExtExt : PXGraphExtension<VendorMaint.DefLocationExt, 
 VendorMaint>
{
    public void _(Events.CacheAttached<PX.Objects.CR.Standalone.Location.vCashAccountID> e) { }
}

错误: “图形扩展中的方法 Boolean DoValidateAddresses(PX.Objects.CR.Extensions.ValidateAddressesDelegate) 被标记为 [PXOverride],但在 PXGraph 中未找到具有该名称的原始方法”

我错过了什么?

TIA!

您的图表扩展 VendorMaint.DefLocationExt 包含 DoValidateAddresses。尝试扩展 VendorMaint。

以下实施将覆盖 AP303000 上的 vCashAccount 属性

public class AAVendorMaintDefLocationExtExtension : PXGraphExtension<DefLocationExt, DefContactAddressExt, VendorMaint>
{
    [PXMergeAttributes(Method = MergeMethod.Merge)]
    [PXUIField(DisplayName = "I am override")]
    public void _(Events.CacheAttached<PX.Objects.CR.Standalone.Location.vCashAccountID> e) { }
}

您还需要以下参考资料

using PX.Data;
using PX.Objects.AP;
using static PX.Objects.AP.VendorMaint;

结果可以在下面的截图中看到

这项任务的主要困难是页面使用了大量的图形扩展。虽然封装功能是一种有益的设计,但可以 finnicky 来确定它们应该在新扩展中声明的顺序。