如何将子帐户值从代码设置为维度选择器

时间:2017-01-04 04:35:58

标签: acumatica

在acumatica申请单屏幕中,我们看到即使子帐户不存在,也会在用户输入新值时创建子帐户。我们如何使用代码为维度选择器设置新值?

后端的subid是一个整数,所以我们不确定如何处理。

请协助。

1 个答案:

答案 0 :(得分:1)

“帐户”和“子帐户”字段的工作方式类似于设置了SubstituteKey属性的PXSelectorAttribute。 “帐户”和“子帐户”字段通常使用AccountAttribute和SubAccountAttribute进行修饰。在其构造函数中,AccountAttribute和SubAccountAttribute始终初始化PXDimensionSelectorAttribute的实例,该实例订阅FieldUpdating和FieldSelecting处理程序以转换内部(整数)和外部(字符串)表示之间的字段值。

要为“帐户”或“子帐户”字段设置值,您应该使用作为第二个ref参数传递的外部(字符串)值来引发FieldUpdating处理程序:

public class RQRequisitionEntryExt : PXGraphExtension<RQRequisitionEntry>
{
    public PXAction<RQRequisition> AddLine;
    [PXButton]
    [PXUIField(DisplayName = "Add Line")]
    protected void addLine()
    {
        PXCache cache = Base.Lines.Cache;

        RQRequisitionLine line = Base.Lines.Insert();
        line.InventoryID = 691;
        line = Base.Lines.Update(line);

        object acctID = "10100";
        cache.RaiseFieldUpdating<RQRequisitionLine.expenseAcctID>(line, ref acctID);
        line.ExpenseAcctID = (int?)acctID;

        object subID = "CONFIN";
        cache.RaiseFieldUpdating<RQRequisitionLine.expenseSubID>(line, ref subID);
        line.ExpenseSubID = (int?)subID;

        Base.Lines.Update(line);
    }
}

如果数据库中没有子帐户值,则SubAccountAttribute会生成临时负整数值。在执行Persist()方法期间,SubAccountAttribute将新的子帐户值保存在数据库中。