0

由于项目之间的冲突,验证自定义时出错。

我将一个项目的级别设置为 99。

我的代码非常简单。如果某些字段在供应商维护中更新,我将供应商维护中的状态翻转为“H”,但它与自定义几个 CS 屏幕的项目冲突。

<Graph ClassName="VendorMaint" Source="#CDATA" IsNew="True" FileType="ExistingGraph">
<CDATA name="Source"><![CDATA[
using PX.Data;
using PX.Objects.CS;

namespace PX.Objects.AP
{
    public class VendorMaint_Extension : PXGraphExtension<VendorMaint>
    {
        protected void CSAnswers_Value_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
        {
            Base.BAccount.SetValueExt<VendorR.status>(Base.BAccount.Current, "H");
        }
        protected void Address_AddressLine1_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
        {
            Base.BAccount.SetValueExt<VendorR.status>(Base.BAccount.Current, "H");
        }
    }
}]]></CDATA>
    </Graph>
    <DAC type="PX.Objects.CR.BAccount">
        <Field FieldName="Status" TypeName="string" OverrideClassName="PX.Objects.AP.Vendor" StorageName="ExistingColumn" />
    </DAC>
</Customization>

错误:定制项目之间存在冲突。Thay 正在尝试从 PX.Objects.CR.BAccount 自定义相同的 DataField 状态

验证失败。

我是 Acumatica 的新手,我发现的所有帖子似乎都是针对早期版本的。任何指导将不胜感激。

4

1 回答 1

0

您没有从第二个自定义项目上传代码,但查看您的代码,您似乎不需要更改BAccountDAC 中的任何内容,因此您可以通过删除该自定义来简化您的项目,这应该可以解决报告的冲突。此外,通过告诉您的覆盖在设置新状态值之前调用基本处理程序来保留任何现有事件也是有意义的。

尝试像这样更改您的项目(注意第一行应与您的描述和 Acumatica 版本匹配):

<Customization level="99" description="" product-version="18.212">
<Graph ClassName="VendorMaint" Source="#CDATA" IsNew="True" FileType="ExistingGraph">
<CDATA name="Source"><![CDATA[
using PX.Data;
using PX.Objects.CS;

namespace PX.Objects.AP
{
    public class VendorMaint_Extension : PXGraphExtension<VendorMaint>
    {
        protected void CSAnswers_Value_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e, PXFieldUpdated InvokeBaseHandler)
        {
            if (InvokeBaseHandler != null) InvokeBaseHandler(cache, e);

            Base.BAccount.SetValueExt<VendorR.status>(Base.BAccount.Current, "H");
        }
        protected void Address_AddressLine1_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e, PXFieldUpdated InvokeBaseHandler)
        {
            if (InvokeBaseHandler != null) InvokeBaseHandler(cache, e);

            Base.BAccount.SetValueExt<VendorR.status>(Base.BAccount.Current, "H");
        }
    }
}]]></CDATA>
</Graph>
</Customization>
于 2019-08-16T23:14:06.387 回答