2015-08-31 51 views
1

我正在用RML創建一個新報告在OpenERP中。這裏是我的Python功能:如何使用[[repeatIn(o.invoice_line,'l','td')]]:每行的循環,併爲每行數據創建一個單元格openerp

def get_employee_lines(self, context=None): 
    print ('--------------------MOMO----------------------') 
    res_list=[] 
    payslip_line = self.pool.get('hr.payslip') 
    print payslip_line 

    obj_ids = payslip_line.search(self.cr, self.uid, []) 
    print obj_ids 
    for res in payslip_line.read(self.cr, self.uid, obj_ids, ['id', 'employee_id'], context=False): 
     print res['employee_id'][1] 
     obj = {} 
     obj['name'] = res['employee_id'][1] 
     res_list.append(obj) 
    return res_list 

和我RML:

<tr> 
    <td> 
     <para style="P9">NOM EMPLOYÉ</para> 
    </td> 

    <td> 
     <para style="P7">[[ repeatIn(get_employee_lines(), 'o') ]]</para> 
     <para style="P7">[[ o['name'] ]]</para> 
    </td> 
    </tr> 

我希望把每個員工在新的小區,這意味着TD。

回答

0

最後我找到了它。 這是答案。 首先,我必須更改我的OpenOffice版本,它是v4.1.X. 第二,我用[[repeatIn(get_employee_lines(example.company_id,example.date_start,example.date_end),'o','td')]]在每一行上循環併爲每一行製作一個新的表格單元格。

所以這裏是正確的答案:

<tr> 
    <td> 
    <para style="P8">NOM EMPLOYÉ</para> 
    </td> 
    <td> 
<para style="P7">[[  repeatIn(get_employee_lines(example.company_id,example.date_start,example.d  ate_end), 'o', 'td') ]]</para> 
<para style="P7">[[ o['name'] ]]</para> 
</td> 
</tr>* 

問候。

0

你所尋找的是這樣的:

<tr> 
    <td> 
     <para style="P9">NOM EMPLOYÉ</para> 
    </td> 

    <section> 
     [[ repeatIn(get_employee_lines(), 'o') ]] 
     <td> 
      <para style="P7">[[ o['name'] ]]</para> 
     </td> 
    </section> 
</tr> 

基本上只要你有repeatIn叫你需要把它和外面的部分,以及內部部分一切都將被重複。但是,如果你使用它,那麼要小心,因爲該元素通常被硬編碼爲固定的列數(畢竟你是在生成表)。

希望它有幫助:)

+0

非常感謝答案先生。但是,我想要的是重複colums而不是行!我怎樣才能做到這一點。因爲我知道當我使用repeatIn(get_employee_lines(),'o','td')通常它應該工作,但我這樣做我得到一個錯誤是:2015-09-01 09:56:35,335 5014錯誤openerp openerp。 service.web_services:例外:'NoneType'對象沒有'tag'屬性 請幫忙請 –

+0

我提供的代碼應該可以工作,因爲這個概念在每次使用時都會起作用,無論內部是什麼內容。我建議你檢查你正在返回的對象。 – doctore

+0

你的code disnt在我的頁面顯示任何內容 –

相關問題