在新的BAccount对象上设置自定义字段

时间:2018-02-01 15:37:27

标签: acumatica

我正在尝试在通过Contact BLC中的操作ConvertToBAccount()创建的全新BAccount对象上设置自定义字段。我已经尝试了很多不同的事情,包括覆盖操作并尝试在操作完成后设置对象的值并导航到BAccount BLC。我发现我无法在覆盖上设置值,因为在用户手动保存之前数据库中没有记录,当我尝试在操作后设置值时,它会设置字段,但不会显示BAccount BLC完成加载后屏幕上的新值。

如何为通过Contacts BLC上的ConvertToBAccount()操作创建的新BAccount设置扩展字段?

DAC扩展:

public class BAccountExt : PXCacheExtension<PX.Objects.CR.BAccount>
{
        #region UsrHomeCampus
        [PXDBInt]
        [PXUIField(DisplayName="Home Campus")]
        [PXSelector(typeof(Search<PX.Objects.GL.Branch.branchID>),
        typeof(PX.Objects.GL.Branch.branchCD),
        SubstituteKey = typeof(PX.Objects.GL.Branch.branchCD))]
        public virtual int? UsrHomeCampus { get; set; }
        public abstract class usrHomeCampus : IBqlField { }
        #endregion
}

BLC代码:

public class BusinessAccountMaint_Extension : PXGraphExtension<BusinessAccountMaint>
{
    #region Event Handlers
    protected void Contact_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
    {
        Contact row = (Contact)e.Row;

        if (row.ContactID > 0 && Base.CurrentBAccount.Current.BAccountID < 0)
        {
            Base.CurrentBAccount.Current.GetExtension<BAccountExt>().UsrHomeCampus = row.GetExtension<ContactExt>().UsrHomeCampus;
            //Save record in database
            Base.Actions.PressSave();
            //Cause page refresh
            Base.Actions.PressCancel();
        }
    }
    #endregion
}

1 个答案:

答案 0 :(得分:2)

当按BAccount方法从联系人创建ConvertToBAccount()时,新创建的BAccountID的{​​{1}}被设置为BAccount&#39}。 s Contact字段。

你应该通过查询类似的东西来获取BAccount

BAccountID

然后得到你这样的扩展名:

BAccount bAccount = PXSelect<BAccount,Where<BAccount.bAccountID,Equal<Required<BAccount.bAccountID>>>.Select(graph,contactObject.BAccountID);

并设置所需的值,然后以某种方式更新BAccount:

BAccountExt acc = PXCache<BAccount>.GetExtension<BAccountExt>(bAccount);