Odoo从15迁移至16后用旧版应收应付账龄报表遇KeyError问题咨询
Odoo 15→16迁移账龄报表KeyError问题解决
错误类型判定
这是运行时错误。本质是15版本的应收应付账龄报表代码与16版本的报表框架不兼容:代码执行时尝试访问options字典的account_type键,但该键在16版本的报表初始化逻辑中未被定义,导致抛出KeyError,属于代码执行阶段的逻辑错误,和数据库数据本身无关。
解决办法
方法1:修改15版报表代码适配16环境
找到15版报表对应的_custom_options_initializer方法,在访问options['account_type']前增加存在性校验:
# 替换原报错代码段 if 'account_type' in options: options['account_type'] = [ account_type for account_type in options['account_type'] if account_type['id'] not in ('trade_payable', 'non_trade_payable') ] else: # 初始化符合16版要求的默认值 options['account_type'] = []
方法2:改用16版本原生账龄报表
Odoo 16并未移除应收应付账龄报表,只是整合至account_reports模块的统一报表体系中:
- 确认
account_reports模块已完整安装 - 在报表菜单中查找客户账龄分析或供应商账龄分析,通过报表内的账户类型筛选功能,实现原15版报表的需求
方法3:获取官方适配补丁
若使用Odoo企业版,可联系官方技术支持获取账龄报表的版本迁移适配补丁,确保代码逻辑完全匹配16版本的框架规范。
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

