首页 > 解决方案 > 无法访问 APTran - Acumatica 中的 UsrsubcontractNbr 字段

问题描述

如何在 rowselected 事件中启用 usrsubcontractNbr:我无法从两个 DAC(ApTran 和 ApTranExt)访问 usrSubcontractNbr 在此处输入图像描述

UsrSubcontractNbr 字段在构造功能包中定义。APTran 被转换成 dll。

如何访问该字段?

标签: acumatica

解决方案


似乎与这篇文章类似的问题:How to access Custom field,which is defined in Construction feature package-Acumatica

从构建安装包中搜索 PX.Objects.CN.dll 会发现:

using PX.Data;
using PX.Objects.AP;
using PX.Objects.CS;

namespace PX.Objects.CN.Subcontracts.AP.CacheExtensions
{
  public sealed class ApTranExt : PXCacheExtension<APTran>
  {
    [PXString(15, IsUnicode = true)]
    [PXUIField(DisplayName = "Subcontract Nbr.", Enabled = false, IsReadOnly = true)]
    public string UsrSubcontractNbr
    {
      get
      {
        if (!(this.get_Base().get_POOrderType() == "RS"))
          return (string) null;
        return this.get_Base().get_PONbr();
      }
    }

    [PXInt]
    [PXUIField(DisplayName = "Subcontract Line", Enabled = false, IsReadOnly = true, Visible = false)]
    public int? UsrSubcontractLineNbr
    {
      get
      {
        if (!(this.get_Base().get_POOrderType() == "RS"))
          return new int?();
        return this.get_Base().get_POLineNbr();
      }
    }

    public static bool IsActive()
    {
      return PXAccess.FeatureInstalled<FeaturesSet.construction>();
    }

    public ApTranExt()
    {
      base.\u002Ector();
    }

    public abstract class usrSubcontractNbr : IBqlField, IBqlOperand
    {
    }

    public abstract class usrSubcontractLineNbr : IBqlField, IBqlOperand
    {
    }
  }
}

要访问该字段,您需要使用PX.Objects.CN.Subcontracts.AP.CacheExtensions.ApTranExt

编辑. 根据评论,如果在使用 rowselected 时遇到问题,请确保将签名与 PXRowSelected 委托一起使用,以便您可以控制何时启用代码以在基本调用之后运行。您可能会遇到在代码之后运行基本调用的问题,这可能会再次禁用该字段。

前任:

protected void APTran_RowSelected(PXCache cache, PXRowSelectedEventArgs e, PXRowSelected del)
{
    del?.Invoke(cache, e);

    var row = (APTran) e.Row;
    if (row == null) return;
    PXUIFieldAttribute.SetEnabled<PX.Objects.CN.Subcontracts.AP.CacheExtensions.ApTranExt.usrSubcontractNbr>(
        cache, row, true);
}

推荐阅读