도움말

0

Is there a way to store the content of a report in a variable?

Avatar
Luis Masuelli

This is how I print a report:

    def yoursister(self, cr, uid, ids, context=None):
        """
        """
        return {
            'type': 'ir.actions.report.xml',
            'report_name': 'trescloud_ats_2013_report',
            'datas': {
                'model': 'sri.ats.2013',
            'res_ids': ids
        }
    }

Is there a way I can get this report's (it is an aeroo report) content as a string (e.g. a string suitable to be stored in a .binary field) instead of just downloading it?

Avatar
Discard
1 응답
0
Avatar
Luis Masuelli
Best Answer

Found it :D.

Assuming your report has the Service Name "your.sister" (which is **not** necessarily the xml id, but the respective field), you can run the following code:

    obj = netsvc.LocalService('report.your.sister')
    (xml_content, format) = obj.create(cr, uid, [], datas, context)

Where:

  • The name in report_name (in the returned-dict way) is the name to be used as argument for LocalService, except that you **must** prefix it with "report.".

  • The dictionary passed as value for 'datas' key is the exact same it will be used in the 4th argument (the one which I conveniently named `datas`).

  • The returned value will be the file content and the file format.

1 코멘트
Avatar
Discard
Avatar
Prasanth ks
-

its new idea to me... thanks bro