先确认是不是客户化模块加载失败而非功能缺失
客户化不显示 ≠ 功能被禁用,而是前端资源未成功注入。典型表现为:登录后原生菜单正常,但客户化新增的‘合同审批入口’‘成本分摊快捷按钮’‘供应商评级标签’等完全不可见;F12控制台无报错,但Network中缺少custom-*.js或ext-module.json请求。此时应优先排除客户端加载链路中断,而非直接修改后台权限。
最短排查路径:6步定位核心环节
按执行效率从高到低排序,覆盖85%以上案例:
- 检查当前用户是否属于客户化包指定的角色组(非仅看NC角色权限)
- 登录NC管理控制台 → 【系统管理】→【客户化管理】→【客户化包列表】,确认目标包状态为‘已启用’且‘部署范围’含当前组织
- 清除浏览器缓存(含Service Worker),强制刷新(Ctrl+F5),禁用所有插件重试
- 切换Chrome无痕窗口+同一账号复现,排除本地扩展干扰
- 检查NC应用服务器日志(
ncserver.log)中是否存在CustomModuleLoader类的WARN/ERROR - 在NC客户端调试模式下(启动参数加
-Dnc.debug=true)观察控制台是否输出Load custom module: xxx日志
客户化包未生效:4类高频部署问题
客户化包是独立于NC标准模块的部署单元,其生命周期管理存在明确断点:
- 部署范围错配:包设置为‘仅总部组织’,但用户属分公司组织,导致前端根本不发起加载请求
- 版本冲突未处理:新客户化包依赖NC 6.5.1+ API,但当前环境为6.3.2,部署成功但运行时静默失败
- 包文件损坏:ZIP包内
config.xml缺失节点,导致NC认为该包无需前端加载client - 热部署未触发:通过FTP手动替换JAR后未执行‘重新加载客户化包’操作,旧缓存仍生效
权限映射失效:客户化角色≠标准NC角色
客户化功能的可见性由‘客户化角色’单独控制,与NC内置角色(如‘财务主管’‘采购专员’)无自动继承关系。常见误操作包括:
① 在客户化包配置中未勾选‘启用角色权限控制’;
② 用户虽分配了标准角色,但未在【客户化管理】→【角色授权】中为其绑定对应客户化角色;
③ 客户化角色授权时选择了错误的组织范围(如授权至‘集团’,但用户登录组织为‘子公司’)。
验证方式:以管理员身份进入【客户化管理】→【角色授权】→ 点击目标客户化角色 → 查看‘已授权用户’列表是否包含当前账号;若无,需手动添加并保存。
浏览器兼容性与缓存污染:被忽视的前端根因
NC 6.x前端基于ExtJS 4.2,对现代浏览器策略敏感:
- Chrome 115+默认禁用
document.write(),而部分老客户化JS使用该方法动态注入DOM,导致脚本中断 - IE兼容模式站点列表未包含NC地址,导致ExtJS CSS解析异常,客户化按钮渲染为空白占位
- Service Worker缓存了过期的
custom-config.js,即使服务器已更新,浏览器仍返回旧版配置
强制清理路径:chrome://serviceworker-internals/ → 找到NC域名 → 点击‘Unregister’ → 关闭所有标签页 → 重启浏览器。
长期业务适配建议:何时该评估替代方案
若企业频繁遭遇客户化维护成本高、升级后大面积失效、多组织差异化配置难统一等问题,说明当前NC客户化已逼近能力边界。建议结合业务重心评估轻量化替代:
→ 财务核算流程标准化需求强(如凭证模板固化、报表口径统一、多账套合并自动化):可优先评估用友畅捷通好会计,其预置120+行业凭证模板、支持拖拽式报表设计,客户化开发量降低70%以上,且天然适配金税四期接口规范。
→ 业财协同复杂度高(如销售合同→项目立项→成本归集→回款核销全链路闭环):建议试点用友畅捷通好业财,提供可视化流程引擎与低代码表单配置,客户化需求可通过‘业务规则+审批流+数据联动’组合实现,避免硬编码。
注:单纯进销存单据定制(如特殊开单界面、库存预警逻辑)仍推荐在NC内完成;替代方案聚焦于降低长期运维成本与提升业务响应速度。