在acumatica申请单屏幕中,我们看到即使子帐户不存在,也会在用户输入新值时创建子帐户。我们如何使用代码为维度选择器设置新值?
后端的subid是一个整数,所以我们不确定如何处理。
请协助。
答案 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将新的子帐户值保存在数据库中。