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

Odoo 10中打印报表后如何关闭弹出的向导表单?

解决Odoo向导打印报表后窗口不关闭的问题

这个问题在Odoo开发里挺常见的——你的打印方法只触发了报表生成,但没给Odoo明确的指令去关闭向导窗口。下面给你两种实用的解决办法:

方法一:给报表动作添加自动关闭标记

在获取报表动作后,加上close_on_report_download参数,这个参数会让Odoo在报表加载或下载完成后自动关闭向导窗口:

@api.multi
def action_print(self):
    # 获取报表动作
    report_action = self.env['report'].get_action(self.payment_id, 'xxx.xxx_report')
    # 添加自动关闭标记
    report_action['close_on_report_download'] = True
    return report_action

方法二:返回复合动作(先关闭向导再打开报表)

如果第一种方法在你的Odoo版本里不生效,可以返回一个包含关闭动作和报表动作的复合指令,强制关闭向导后再打开报表:

@api.multi
def action_print(self):
    self.ensure_one()
    # 获取报表动作
    report_action = self.env['report'].get_action(self.payment_id, 'xxx.xxx_report')
    # 返回复合动作:先关闭向导窗口,再触发报表
    return {
        'type': 'ir.actions.act_multi',
        'actions': [
            {'type': 'ir.actions.act_window_close'},
            report_action,
        ]
    }

额外注意事项

  • 确保你的向导模型是临时模型(transient model),也就是继承自'transient.model',只有临时模型的窗口才会响应关闭动作。
  • 测试时留意浏览器的弹窗权限,如果报表被拦截,向导可能也无法正常关闭。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:43:36