You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Acumatica自定义屏幕打开销售订单时设置IN/RM为默认订单类型

解决Acumatica打开销售订单时默认设置指定订单类型的问题

你遇到的问题核心在于:直接创建SOOrderEntry实例时,系统会自动读取用户偏好设置里的默认订单类型,所以默认只会加载SO。要让IN或RM成为打开界面时的默认类型,你需要在重定向前手动干预订单记录的初始化或者视图的默认值。

下面给你两种可行的实现方案:


方案一:直接初始化带指定类型的新订单

这种方式会在打开销售订单界面时,直接创建一条预设好订单类型的空白记录,用户可以直接开始编辑:

// 创建销售订单处理图的实例
SOOrderEntry graph = PXGraph.CreateInstance<SOOrderEntry>();

// 初始化一条新的销售订单记录
SOOrder newSO = new SOOrder();
// 设置你需要的默认订单类型,这里替换成"IN"或"RM"即可
newSO.OrderType = "IN";
// 将这条预设记录插入到图的主数据视图中
newSO = graph.Document.Insert(newSO);

// 重定向到销售订单界面,以新窗口打开
PXRedirectHelper.TryRedirect(graph, PXRedirectHelper.WindowMode.NewWindow);

方案二:修改视图默认值,保留空白新建状态

如果你希望打开的是纯空白的新建界面,但订单类型下拉框默认选中IN或RM,可以用这种方式:

SOOrderEntry graph = PXGraph.CreateInstance<SOOrderEntry>();

// 清空当前视图的默认记录,避免加载偏好设置里的SO类型
graph.Document.Current = null;
// 给订单类型字段设置默认值,替换成你需要的"RM"或"IN"
graph.Document.Cache.SetDefaultExt<SOOrder.orderType>(graph.Document.Current, "RM");

PXRedirectHelper.TryRedirect(graph, PXRedirectHelper.WindowMode.NewWindow);

小提示

  • 要确保你设置的订单类型(IN/RM)是系统中已经配置生效的类型,不然会触发验证报错。
  • 如果你的自定义屏幕是嵌套在其他业务图的上下文里,也可以考虑通过参数传递的方式传递订单类型,但上面两种方案已经能覆盖绝大多数场景。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:02:09