2016-07-07 18 views
1

Ich versuche, einen benutzerdefinierten Bericht zu erstellen. Ich benutzte diese Dokumentation https://www.odoo.com/documentation/8.0/reference/reports.html und schaute auf das Add-on "Verkauf", um ein Beispiel des Berichts zu haben. Ich wollte einen ersten Test machen, also habe ich die minimale funktionsfähige Vorlage der Dokumentation verwendet.Odoo So erstellen Sie einen benutzerdefinierten Bericht, AttributeError

Hier ist meine Vorlage

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 
      <template id="report_demand_document"> 
        <t t-call="report.html_container"> 
          <t t-foreach="docs" t-as="o"> 
            <t t-call="report.external_layout"> 
              <div class="page"> 
                <h2>Propositions</h2> 
                <p>Vote du <span t-field="o.date"/></p> 
              </div> 
            </t> 
          </t> 
        </t> 
      </template> 
    </data> 
</openerp> 

Hier ist der Bericht Aufruf

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 
      <report 
        id="report_demand" 
        string="Propositions en cours" 
        model="report" 
        report_type="qweb-pdf" 
        name="report.report_demand" 
        file="report.report_demand" 
        attachment="'Propositions' + str(object.date) +'.pdf'"/> 
    </data> 
</openerp> 

Und ich bekomme diese Fehlermeldung:

AttributeError: 'report' object has no attribute '_check_wkhtmltopdf' 

Das vollständige Protokoll bei Bedarf:

Traceback (most recent call last): 
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 540, in _handle_exception 
    return super(JsonRequest, self)._handle_exception(exception) 
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 577, in dispatch 
    result = self._call_function(**self.params) 
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 313, in _call_function 
    return checked_call(self.db, *args, **kwargs) 
File "/usr/lib/python2.7/dist-packages/openerp/service/model.py", line 118, in wrapper 
    return f(dbname, *args, **kwargs) 
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 310, in checked_call 
    return self.endpoint(*a, **kw) 
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 806, in __call__ 
    return self.method(*args, **kw) 
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 406, in response_wrap 
    response = f(*args, **kw) 
File "/usr/lib/python2.7/dist-packages/openerp/addons/report/controllers/main.py", line 143, in check_wkhtmltopdf 
    return request.registry['report']._check_wkhtmltopdf() 
AttributeError: 'report' object has no attribute '_check_wkhtmltopdf' 

Ich suchte auf Google nach "_check_wkhtmltopdf", fand aber in Odoo nichts darüber und auch keinen Fehler. Was bedeutet dieser Fehler? Muss ich etwas installieren? (Ich verwende Odoo-8)

+0

Welches Skript haben Sie ausgeführt? Kannst du es erwähnen oder den Code kopieren? – giosans

+0

Ich habe das Skript nicht neu definiert, ich gehe auf mein Formular, benutze "Drucken" und wähle das, das ich erstellt habe. –

+0

Leider habe ich "Odoo" im Titel vergessen ... –

Antwort

1

Wenn ich es richtig sehen, dann haben Sie die Odoo Modell/Klasse außer Kraft gesetzt report, die das Zeug zum Rendern von Dokumenten Griffe usw.

<report 
    id="report_demand" 
    string="Propositions en cours" 
    model="report" 
    report_type="qweb-pdf" 
    name="report.report_demand" 
    file="report.report_demand" 
    attachment="'Propositions' + str(object.date) +'.pdf'"/> 

Hier Sie definieren den Bericht zu Modell report. Andere Beispiele zeigen Werte wie sale.order oder account.invoice für die Berichtsdefinitionen.

Bitte deklarieren Sie kein neues ORM Modell report. Benutze einfach einen anderen Namen wie test.report oder so ähnlich.

Lassen Sie uns über das Rückgängigmachen dieses Fehlers sprechen: Ändern Sie das Attribut _name auf Ihrem Testmodell und starten Sie den Server neu. Und natürlich ändern Sie Ihre Berichtsdefinition in den neuen Modellnamen. Jetzt aktualisiere dein Modul. Das sollte den Trick machen.