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
相关产品推荐
相关产品推荐

