QWEB - IndexError: список индексов вне диапазона
Я пытаюсь создать отчет QWeb. У меня есть список продуктов, и я хотел бы распечатать каждый этикет на той же странице. Это мой код:
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- Déclaration des rapports -->
<report
id="etiquette_produit"
model="product.template"
string="Etiquette Produit"
report_type="qweb-pdf"
file="Product_Etiquette_QWeb.produit_etiquette"
name="Product_Etiquette_QWeb.produit_etiquette"
/>
<template id="produit_etiquette">
<t t-call="report.external_layout">
<t t-foreach="docs" t-as="o">
<div class="page">
<table class="table table-striped">
<tr>
<td class="col-xs-1"><span t-field="o.default_code"/></td>
<td class="col-xs-5 text-center"><span t-field="o.name"/></td>
<td class="col-xs-1"><span t-field="o.default_code"/></td>
<td class="col-xs-5 text-center"><span t-field="o.name"/></td>
</tr>
<tr>
<td colspan="2" class="text-center">* M E 2 1 5 9 *</td>
<td colspan="2" class="text-center">* M E 2 0 1 7 *</td>
</tr>
</table>
</div>
</t>
</t>
</template>
</data>
</openerp>
Проблема: когда я выбираю все продукты для печати, у меня появляется ошибка (см. Ниже). Но когда я выбираю только один продукт, я могу распечатать отчет.
Odoo Server Error
Traceback (most recent call last):
File "/opt/odoo/odoo-server/addons/report/controllers/main.py", line 116, in report_download
response = self.report_routes(reportname, docids=docids, converter='pdf')
File "/opt/odoo/odoo-server/openerp/http.py", line 405, in response_wrap
response = f(*args, **kw)
File "/opt/odoo/odoo-server/addons/report/controllers/main.py", line 65, in report_routes
pdf = report_obj.get_pdf(cr, uid, docids, reportname, data=options_data, context=context)
File "/opt/odoo/odoo-server/openerp/api.py", line 268, in wrapper
return old_api(self, *args, **kwargs)
File "/opt/odoo/odoo-server/addons/report/models/report.py", line 275, in get_pdf
paperformat, specific_paperformat_args, save_in_attachment
File "/opt/odoo/odoo-server/openerp/api.py", line 268, in wrapper
return old_api(self, *args, **kwargs)
File "/opt/odoo/odoo-server/addons/report/models/report.py", line 432, in _run_wkhtmltopdf
head_file.write(headers[index])
IndexError: list index out of range
Любая идея?
1 ответ
Проблема связана с тем фактом, что механизм отчетов ожидает, что на каждой странице будет по 1 верхнему и нижнему колонтитулам. Вы создаете N страниц для 1 верхнего + нижнего колонтитула.
Вызов <t t-call="report.external_layout">
должен быть помещен в цикл for. Если вам нужно более одного элемента на одной странице, не используйте page
Класс как обертка, так как это то, что он использовал движок для получения страниц отчета. Вы можете взглянуть на исходный код.