Acumatica:定制项目之间的冲突

Acumatica: Conflict between customization projects

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

我将一个项目的级别设置为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>

错误:自定义项目之间存在冲突。他们正在尝试从 PX.Objects.CR.BAccount

自定义相同的数据字段状态

验证失败。

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

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

尝试像这样更改您的项目(注意第一行应与您的描述和 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>