如何从代码到维度选择器设置子账户值
How to set the sub-account value from code to Dimension selector
在acumatica 申请屏幕中,我们看到即使子帐户不存在,它也会在用户输入新值时创建它。我们如何使用代码为维度选择器设置新值?
后台的subid是整数,不知道怎么处理。
请协助。
帐户和子帐户字段的工作方式类似于设置了 SubstituteKey 属性 的 PXSelectorAttribute。 Account 和 Sub-Account 字段通常用 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 保存在数据库中。
在acumatica 申请屏幕中,我们看到即使子帐户不存在,它也会在用户输入新值时创建它。我们如何使用代码为维度选择器设置新值?
后台的subid是整数,不知道怎么处理。
请协助。
帐户和子帐户字段的工作方式类似于设置了 SubstituteKey 属性 的 PXSelectorAttribute。 Account 和 Sub-Account 字段通常用 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 保存在数据库中。