Acumatica PXUIFieldAttribute SetError 给出错误

Acumatica PXUIFieldAttribute SetError giving error

我正在尝试验证输入到我的 Support Split table 中的值,为什么我无法获取我的 ItemExtension

protected void atcProjectCostCenterTable_CostCenterSplit_FieldVerifying(PXCache cache, PXFieldVerifyingEventArgs e, PXFieldVerifying InvokeBaseHandler)
{
    if (InvokeBaseHandler != null)
        InvokeBaseHandler(cache, e);
    var row = (atcProjectCostCenterTable)e.Row;

    if (row.ContractID > 0)
    {
        decimal? hun = 100;
        PX.Objects.CT.ContractExt item = row.GetExtension<PX.Objects.CT.ContractExt>();

        if (CostCenterSplit.Select().Count >= 1)
        {
            if (item.UsrCostCenterSum.Value != hun)
            {
                PXUIFieldAttribute.SetError<atcProjectCostCenterTable.costCenterSplit>(cache, row, "Support Percentages must equal 100%");
                //throw new PXSetPropertyException("Cost Center Percentages must equal 100%", PXErrorLevel.Warning);
            }
        }
    }
}

Nick,请替换

PX.Objects.CT.ContractExt item = row.GetExtension<PX.Objects.CT.ContractExt>();

PX.Objects.CT.ContractExt item = Base.Project.Current.GetExtension<PX.Objects.CT.ContractExt>();

PX.Objects.CT.ContractExt item = Base.Project.Cache.GetExtension<PX.Objects.CT.ContractExt>(Base.Project.Current);

您当前的代码无法工作,因为 ContractExt 扩展了 Contract DAC,而不是 atcProjectCostCenterTable。由于 PMProject 继承自 Contract,因此为 Contract DAC 定义的 DAC 扩展也可用于 PMProject 实例。

  Contract con = Base.Project.Current;
  PX.Objects.CT.ContractExt item = con.GetExtension<PX.Objects.CT.ContractExt>();