首页 文章

Acumatica - 为期刊交易添加员工选择器

提问于
浏览
0

我正在尝试将一个Employees选择器添加到日志事务屏幕(GL301000)中,特别是在网格中 . 我使用GLTran DAC作为基础创建了DAC扩展代码 . 这是我的代码:

using PX.Common;
using PX.Data.ReferentialIntegrity.Attributes;
using PX.Data;
using PX.Objects.AP;
using PX.Objects.CM;
using PX.Objects.CR;
using PX.Objects.CS;
using PX.Objects.EP;
using PX.Objects.GL;
using PX.Objects.IN;
using PX.Objects.PM;
using PX.Objects.TX;
using PX.Objects;
using System.Collections.Generic;
using System;

namespace PX.Objects.GL
{
  public class GLTranExt : PXCacheExtension<PX.Objects.GL.GLTran>
  {
    #region Resource
  public class emp: PX.Data.Constant<string>
{
    public emp() : base("EMPHOUR") { }
}
    public abstract class resource: PX.Data.IBqlField
    {
    }
    protected int? _Resource;

    [PXDBInt]
    [PXDefault()]
    [PXUIField(DisplayName="Resource")]
    [PXSelector(typeof(Search2<BAccount.bAccountID,
    InnerJoin<Vendor,
    On<Vendor.bAccountID,
    Equal<BAccount.bAccountID>>>,
    Where<Vendor.vendorClassID,
    Equal<emp>>>),
    SubstituteKey = typeof(BAccount.acctName))]
        public virtual int? Resource
    {
      get
      {
        return this._Resource;
      }
      set
      {
        this._Resource = value;
      }
    }
    #endregion
  }
}

我尝试将字段添加到网格时收到错误,这是我的错误:

Error: An invalid selector column has been provided.
Parameter name: fieldList

谁能指出我正确的方向?我知道要显示正确的Employee名称,您必须在Vendor表和BAccount表中使用where或join . 然而,当我尝试使用LeftJoin方法时,我收到一条错误,指出无法绑定多部分标识符 .

1 回答

  • 0

    我找到了解决方案 .

    我需要向PXDefault添加持久检查,并将CommitChanges属性更改为true .

    以下是正确的代码:

    public class GLTranExt : PXCacheExtension<PX.Objects.GL.GLTran>
      {
        #region Resource
      public class emp: PX.Data.Constant<string>
    {
        public emp() : base("EMPHOUR") { }
    }
        public abstract class resource: PX.Data.IBqlField
        {
        }
        protected int? _Resource;
    
        [PXDBInt]
        [PXDefault(PersistingCheck=PXPersistingCheck.Nothing)]
        [PXUIField(DisplayName="Resource")]
        [PXSelector(typeof(Search2<BAccount.bAccountID,
        InnerJoin<Vendor,
        On<Vendor.bAccountID,
        Equal<BAccount.bAccountID>>>,
        Where<Vendor.vendorClassID,
        Equal<emp>>>),
        SubstituteKey = typeof(BAccount.acctName))]
            public virtual int? Resource
        {
          get
          {
            return this._Resource;
          }
          set
          {
            this._Resource = value;
          }
        }
        #endregion
      }
    

    还要记住创建一个DB Script以将Resource字段添加到值INT的GLTran表中 .

相关问题