Как настроить отчеты в Odoo 11 в Qweb? Как отправить данные из другой модели в отчет qweb?

Кто-нибудь знает, как изменить источник документов в настраиваемом отчете? Мне нужно загрузить набор данных из представления, унаследованного от моей модели. Столбцы такие же, как и в модели, это просто фильтр данных.


person negstek    schedule 06.12.2017    source источник


Ответы (3)


В версии 11 был удален модуль отчета вместе с объектом отчета. По этой причине вы столкнулись с этой ошибкой. Вы должны удалить отчет из зависимостей, так как он добавлен / объединен в базовом модуле. Вы можете проверить это здесь.

Вы можете вызвать свой отчет с помощью метода report_action следующим образом:

self.env.ref('your_report_name').report_action(self, data=data)

Надеюсь, это поможет вам и решит вашу проблему.

person Muhsin k    schedule 01.01.2018

Odoo 11

Больше нет необходимости использовать odoo.report библиотеку. Это устарело. Вы можете использовать odoo.tools, если это необходимо:

from odoo.tools import report

Как объясняется здесь

И вы можете отправлять данные, как говорит Мухсин К. в своем ответе

self.env.ref('your_report_name').report_action(self, data=data)

Предыдущие версии Odoo

Вся документация находится здесь. В любом случае, если вы хотите настроить данные, которые вы можете использовать в отчете, вы можете использовать такой метод:

from odoo import api, models

class ParticularReport(models.AbstractModel):
    _name = 'report.module.report_name'
    @api.model
    def render_html(self, docids, data=None):
        report_obj = self.env['report']
        report = report_obj._get_report_from_name('module.report_name')

        custom_data = self.env['model.name'].get_data()

        docargs = {
            'doc_ids': docids,
            'doc_model': report.model,
            'docs': self,
            'custom_data': custom_data,
        }
        return report_obj.render('module.report_name', docargs)

Модель model.name - это модель, в которой вы хотите получать информацию

Наследовать шаблоны Qweb

Тег template - это ярлык для некоторых представлений. Здесь также можно использовать атрибут inherit_id. Большинство отчетов построено с использованием такого вида:

<template id='report_invoice_document' inherit_id='account.report_invoice_document'>
    <xpath expr="//p[@t-if='o.payment_term.note']" position="after">

        <!-- You can use you data object here -->

    </xpath>
</template>
person ChesuCR    schedule 07.12.2017
comment
Я уже знаю расположение документации, и вы просто скопируете его. Это бесполезно. Я ищу способ или пример того, как заменить полный набор данных отчета представлением с такими же столбцами. - person negstek; 14.12.2017
comment
Конечно, но тебе больше ничего не нужно. Вы можете отправить всю информацию, которую хотите в отчет, с помощью этого метода. Я добавил custom_data к своему ответу, чтобы прояснить его - person ChesuCR; 14.12.2017
comment
Вероятно, моя проблема возникла из-за того, что я не понимаю, как сделать так, чтобы моя модель указывала на представление, а не на таблицу. По моей задумке нужна всего одна модель ... - person negstek; 15.12.2017
comment
Я не понимаю о чем ты? Я могу показать вам полный пример отчета, если он вам поможет - person ChesuCR; 16.12.2017
comment
@ChesuCR Я не нашел базовый метод render_html () в Odoo 11. Я думаю, что заданный им вопрос - это совершенно другая версия, и вы отвечаете на них, это также другая версия. - person DASADIYA CHAITANYA; 09.01.2018
comment
@dasadiya Умм, я еще не работал с Odoo v11, но я скопировал пример из документации Odoo v11. Вы имеете в виду, что документация неверна и изменила способ добавления пользовательских данных в отчет? Я думаю, что родительский метод должен быть в модуле report, но я его тоже не проверял - person ChesuCR; 09.01.2018
comment
Документ полностью является частью более старой версии, кроме odoo V11, а также еще один важный модуль отчета полностью удален из V11 и объединен с базовым модулем. просто проверьте и посмотрите код и измените свой ответ. - person DASADIYA CHAITANYA; 09.01.2018
comment
Хорошо, это новая информация для меня, спасибо. Я проверю позже, если будет свободное время - person ChesuCR; 09.01.2018
comment
Да, конечно, вы можете проверить это в свободное время - person DASADIYA CHAITANYA; 13.01.2018
comment
в odoo.tools нет модуля отчетов - person ruuter; 21.08.2018
comment
на odoo11 нет env ['report']! - person m3asmi; 09.05.2019
comment
Вот почему я пишу для предыдущих версий Odoo @ m3asmi. Это просто дополнительная информация - person ChesuCR; 09.05.2019

render_html был заменен функцией get_report_values:

    @api.model
    def get_report_values(self, docids, data=None): 
        docs = self.env['model.name'].browse(docids)
        return {
             'doc_ids': docids,
             'doc_model': 'model.name',
             'docs': docs,
             'lines': self.some_func(docs),
             'data': data,
        }
person m3asmi    schedule 09.05.2019