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

Odoo15自定义模块迁移至Odoo16时安装报错(company_id权限问题)

解决Odoo 16自定义模块迁移的company_id权限报错

问题根源

Odoo 16强化了多公司字段company_id的权限控制,当视图字段的domain直接引用company_id时,若当前用户未加入base.group_multi_company组,就会触发权限限制报错。你的自定义继承视图account.account.list.dim.inherited中,journal_ids字段的domain使用了[('company_id','=',company_id)],导致无多公司权限的用户无法加载视图。

可行解决方案

方案1:修改视图的domain表达式

将domain中直接引用的company_id替换为当前用户的公司字段user.company_id,所有用户都有权限访问自身关联的公司信息,不会触发权限限制。
找到自定义模块中对应的视图文件account_account_views.xml,定位到account.account.list.dim.inherited视图,修改journal_ids字段的domain部分:

<!-- 修改前 -->
<field name="journal_ids" domain="[('company_id','=',company_id)]"/>
<!-- 修改后 -->
<field name="journal_ids" domain="[('company_id','=',user.company_id)]"/>

方案2:为需要访问该视图的用户分配多公司权限

如果业务场景确实需要多公司支持,可以直接给相关用户分配base.group_multi_company组:

  • 进入Odoo后台的设置 > 用户与公司 > 用户
  • 编辑目标用户,在访问权限标签页的多公司部分,勾选多公司权限组(对应XML ID为base.group_multi_company)

方案3:通过字段定义调整权限(适用于自定义字段扩展场景)

如果是自定义扩展了journal_ids字段的domain,可以在字段定义中添加groups属性,明确允许该字段的domain被多公司组访问,或者使用compute方法动态生成domain:

# 示例:在字段定义中指定权限组
journal_ids = fields.Many2many(
    'account.journal',
    domain="[('company_id','=',company_id)]",
    groups='base.group_multi_company'
)

验证修复

修改完成后,升级自定义模块,重新加载视图即可验证是否解决报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:47:23