0

从 openErp 7 迁移后,我试图在 odoo 8 中做我自己的自定义报告。我已经按照本教程进行操作,但我一开始就被困在第 3 步,从服务器收到错误,并带有以下跟踪

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 177, in run_wsgi
    execute(self.server.app)
  File "/usr/lib/python2.7/dist-packages/werkzeug/serving.py", line 165, in execute
    application_iter = app(environ, start_response)
  File "/usr/lib/python2.7/dist-packages/openerp/service/server.py", line 281, in app
    return self.app(e, s)
  File "/usr/lib/python2.7/dist-packages/openerp/service/wsgi_server.py", line 216, in application
    return application_unproxied(environ, start_response)
  File "/usr/lib/python2.7/dist-packages/openerp/service/wsgi_server.py", line 202, in application_unproxied
    result = handler(environ, start_response)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 1280, in __call__
    return self.dispatch(environ, start_response)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 1254, in __call__
    return self.app(environ, start_wrapped)
  File "/usr/lib/python2.7/dist-packages/werkzeug/wsgi.py", line 588, in __call__
    return self.app(environ, start_response)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 1421, in dispatch
    result = ir_http._dispatch()
  File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_http.py", line 168, in _dispatch
    return self._handle_exception(e)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_http.py", line 138, in _handle_exception
    return request._handle_exception(exception)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 659, in _handle_exception
    return super(HttpRequest, self)._handle_exception(exception)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_http.py", line 164, in _dispatch
    result = request.dispatch()
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 677, in dispatch
    r = self._call_function(**self.params)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 303, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/service/model.py", line 113, in wrapper
    return f(dbname, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 300, in checked_call
    return self.endpoint(*a, **kw)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 796, in __call__
    return self.method(*args, **kw)
  File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 396, in response_wrap
    response = f(*args, **kw)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/report/controllers/main.py", line 62, in report_routes
    html = report_obj.get_html(cr, uid, docids, reportname, data=options_data, context=context)
  File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper
    return old_api(self, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/report/models/report.py", line 175, in get_html
    return self.render(cr, uid, [], report.report_name, docargs, context=context)
  File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper
    return old_api(self, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/report/models/report.py", line 151, in render
    return view_obj.render(cr, uid, template, values, context=context)
  File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper
    return old_api(self, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_ui_view.py", line 1029, in render
    return self.pool[engine].render(cr, uid, id_or_xml_id, qcontext, loader=loader, context=context)
  File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper
    return old_api(self, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 259, in render
    return self.render_node(self.get_template(id_or_xml_id, qwebcontext), qwebcontext)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 188, in get_template
    xml_doc = qwebcontext.loader(name)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_ui_view.py", line 1027, in loader
    return self.read_template(cr, uid, name, context=context)
  File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper
    return old_api(self, *args, **kwargs)
  File "<string>", line 2, in read_template

  File "/usr/lib/python2.7/dist-packages/openerp/tools/cache.py", line 121, in lookup
    value = d[key] = self.method(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_ui_view.py", line 859, in read_template
    arch = self.read_combined(cr, uid, view_id, fields=['arch'], context=context)['arch']
  File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 241, in wrapper
    return old_api(self, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_ui_view.py", line 524, in read_combined
    while v.mode != 'primary':
  File "/usr/lib/python2.7/dist-packages/openerp/fields.py", line 823, in __get__
    return record._cache[self]
  File "/usr/lib/python2.7/dist-packages/openerp/models.py", line 5906, in __getitem__
    return value.get() if isinstance(value, SpecialValue) else value
  File "/usr/lib/python2.7/dist-packages/openerp/fields.py", line 55, in get
    raise self.exception
MissingError: ('MissingError', u'One of the documents you are trying to access has been deleted, please try again after refreshing.')

这看起来类似于这个 SO question,到目前为止,它的答案对于不是非常面向 python 的编码器来说并不是很有帮助......

4

2 回答 2

2

I think This Will help you.

Step: 1 Create menu for Report menu :

       <report
        id="action_report_id"
        model="model name"
        string="Report Name"
        report_type="qweb-pdf"
        name="module name.report_template_id"
        file="module name.report_template_id"
        />

Step 2 : Create .py file for call report template and method like this :

class custom_class_name(report_sxw.rml_parse):


    def __init__(self, cr, uid, name, context):
        super(custom_class_name, self).__init__(cr, uid, name, context=context)
        self.localcontext.update({
               'time': time,
        })



class test_report_class_name(osv.AbstractModel):
    _name = 'report.module_name.report_template_id'
    _inherit = 'report.abstract_report'
    _template = 'module_name.report_template_id'
    _wrapped_report_class = custom_class_name

Step: 3 Create template in xml file for report view like this :

 <?xml version="1.0" encoding="utf-8"?>
 <openerp>
    <data>
        <template id="report_template_id">
            <t t-foreach="docs" t-as="o">
                <div class="page">
                    <div class="row">
                        <div class="col-xs-6">
                             <span> Your Report View</span>
                        </div>
                    </div>              
                </div>
            </t>
        </template>
     </data>
  </openerp>
于 2015-08-25T07:52:27.383 回答
0

您是否阅读了QWeb 报告的 Odoo 文档

<!-- Report "Human readable name" document template -->
<record id="view_model_document_qweb" model="ir.ui.view">
    <field name="name">Human readable name</field>
    <field name="model">model</field>
    <field name="type">qweb</field>
    <field name="mode">primary</field>
    <field name="priority" eval="16" />
    <field name="active" eval="True" />
    <field name="arch" type="xml">
        <t t-name="module.view_model_document_qweb">
            <t t-call="report.external_layout">
                <div class="page">
                    <h2>Report title</h2>
                    <p>This object's name is <span t-field="o.name"/></p>
                </div>
            </t>
        </t>
    </field>
</record>

<!-- Report "Human readable name" translate_doc template -->
<record id="view_model_qweb" model="ir.ui.view">
    <field name="name">Human readable name</field>
    <field name="model">model</field>
    <field name="type">qweb</field>
    <field name="mode">primary</field>
    <field name="priority" eval="16" />
    <field name="active" eval="True" />
    <field name="arch" type="xml">
        <t t-name="module.view_model_qweb">
            <t t-call="report.html_container">
                <t t-foreach="doc_ids" t-as="doc_id">
                    <t t-raw="translate_doc(doc_id, doc_model, 'lang', 'module.view_model_document_qweb')"/>
                </t>
            </t>
        </t>
    </field>
</record>

<!-- Report action to show: "Human readable name" -->
<record id="action_report_human_readable_name" model="ir.actions.report.xml">
    <field name="name">Human readable name</field>
    <field name="model">model</field>
    <field name="report_type">qweb-pdf</field>
    <field name="report_name">module.view_model_qweb</field>
    <field name="attachment_use" eval="True" />
    <field name="attachment">(object.name+'.pdf')</field>
    <field name="paperformat_id" ref="report.paperformat_euro" />
    <field name="help">Something about Human readable name</field>
</record>

<!-- Button to print the report: "Human readable name" -->
<record id="human_readable_name_values" model="ir.values">
    <field name="name">Human readable name</field>
    <field name="model_id" ref="module.model_model" />
    <field name="model">model</field>
    <field name="value" eval="'ir.actions.report.xml,' +str(ref('action_report_human_readable_name'))" />
    <field name="key">action</field>
    <field name="key2">client_print_multi</field>
</record>

我从这里带来了片段

于 2015-08-18T17:33:14.490 回答