2

我在 odoo 12 中为 account.invoice 开发了一个新报告,但是当我想打印它时,它在 12.0 分支中给了我这样的警告:

报告的模板“模板名称”有误,请联系您的管理员。

无法分隔文件以另存为附件,因为报告的模板不包含具有 'article' 类名的 div 上的属性 'data-oe-model' 和 'data-oe-id'。

在 master 分支中,它说 data-model 而不是 data-oe-model,data-id 而不是 data-oe-id 和“page”类名而不是“article”类名

如果有人遇到同样的问题并找到解决方案,请告诉我。

谢谢

4

4 回答 4

3

我在朋友的帮助下解决了这个问题:

在您的 external_layout 中,您必须定义 't-att-data-oe-model' 和 't-att-data-oe-id' 。添加这个:

<div class="article o_report_layout_standard" t-att-data-oe-model="o and o._name" t-att-data-oe-id="o and o.id">
    <t t-call="web.address_layout"/>
    <t t-raw="0"/>
</div>

以前这段代码(v11)是这样的:

<div class="article o_report_layout_standard">
    <t t-raw="0" />
</div>

希望它能解决你的问题。此更改是因为现在可以使用工作室应用程序在 v12 中编辑报告。

于 2018-10-18T04:52:19.340 回答
0

是的,您需要修改 external_layout,在我的情况下,它是自定义布局,我使用下面的 XML 解决了它

<template id="custom_layout">
    <!-- Multicompany -->
        <div class="article o_report_layout_standard" t-att-data-oe-model="doc and doc._name" t-att-data-oe-id="doc and doc.id">
            <t t-if ="doc and 'company_id' in doc" >
                <t t-set="company" t-value="doc.company_id"/>
                <t t-set="customer" t-value="doc.partner_id"/>
            </t>
            <t t-call="custom_sale_report_v12.custom_layout_header"/>
            <t t-raw="0"/>
            <t t-call="ce_sale_report_v12.custom_layout_footer"/>
        </div>
    </template>
于 2018-12-06T09:22:15.157 回答
0

我遇到了同样的问题。

原因是t-if之前有一个条件<t t-call="web.external_layout">。当它的值为 False 时,错误就来了。

于 2021-12-27T09:51:51.637 回答
-1

如果report_type="qweb-pdf" 没有report_type="qweb-html",则可能发生此错误。为了解决这个问题,只有两个......这样的事情:

<report
        id="report_invoice_html"
        model="MY_MODEL_NAME"
        string="Invoice HTML"
        name="MODULE.report_invoice_view"
        file="MODULE.report_invoice"
        report_type="qweb-html" />

<report
        id="report_invoice_pdf"
        model="MY_MODEL_NAME"
        string="Invoice PDF"
        name="MODULE.report_invoice_view"
        file="MODULE.report_invoice"
        report_type="qweb-pdf" />

如果您查看 ir_actions_report.py 中的 Odoo 代码源,您将看到一条比较 set(res_ids) != set(html_ids) 的语句,如果 HTML 模板不存在,则返回 True,然后引发错误

于 2020-02-18T14:04:59.750 回答