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

如何通过代码隐藏Acumatica物料清单和生产订单的所有相关界面

实现方案

以下是通过代码+自定义配置隐藏Acumatica物料清单、生产订单全部界面的操作步骤:

  • 首先通过实现ISitemapModifier接口批量隐藏站点地图中的目标模块节点,发布自定义项后全局生效,代码示例如下:
using PX.Data;
using PX.SM;

public class ProductionModuleSitemapModifier : ISitemapModifier
{
    public void Modify(SitemapNode sitemapRoot)
    {
        // 隐藏物料清单根节点(含所有下属子界面)
        HideNodeByScreenId(sitemapRoot, "AM000000");
        // 隐藏生产订单根节点(含所有下属子界面)
        HideNodeByScreenId(sitemapRoot, "AM200000");
        // 隐藏生产模块整个工作区入口
        HideNodeByScreenId(sitemapRoot, "WE000029");
    }

    private void HideNodeByScreenId(SitemapNode currentNode, string targetScreenId)
    {
        if (currentNode.ScreenID.Equals(targetScreenId, System.StringComparison.OrdinalIgnoreCase))
        {
            currentNode.Visible = false;
            currentNode.RestrictAccess = true;
            return;
        }
        foreach (var childNode in currentNode.Children)
        {
            HideNodeByScreenId(childNode, targetScreenId);
        }
    }
}

注意:不同版本Acumatica的模块ScreenID可能存在差异,可打开目标界面后按Ctrl+Alt+左键点击界面空白处,在弹出的界面属性中查看准确ScreenID替换上述参数

  • 完成代码修改后,可额外在自定义项目的「站点地图」配置页中,批量选中所有物料清单、生产订单相关的节点,将可见性设置为隐藏,避免代码未覆盖的自定义磁贴漏出。
  • 若需要禁止用户直接输入URL访问对应界面,可批量配置界面访问权限,单界面权限配置代码示例如下,将所有相关界面的ScreenID替换后逐一设置即可:
    PXAccessRights.SetForScreen("AM201500", PXAccessRight.Denied);

验证规则:发布自定义项后重新登录系统,左侧导航栏无生产相关工作区入口,全局搜索无物料清单、生产订单相关界面结果,直接输入目标界面URL会提示无访问权限即为配置成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:27:01