Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Openerp 编程错误:can';t适应类型';账户、发票和#x27;方法_Openerp_Odoo 8_Odoo 9 - Fatal编程技术网

Openerp 编程错误:can';t适应类型';账户、发票和#x27;方法

Openerp 编程错误:can';t适应类型';账户、发票和#x27;方法,openerp,odoo-8,odoo-9,Openerp,Odoo 8,Odoo 9,我想循环检查我所有的发票,但得到这个错误。如果我更改库存[0].id,它将工作,但仅循环第一张发票。如何使其循环所有发票 def generate(self): Invoice = self.env['account.invoice'] inv = Invoice.browse(Invoice.search([])) invoice = inv and inv[0] for inv in invoice:

我想循环检查我所有的发票,但得到这个错误。如果我更改库存[0].id,它将工作,但仅循环第一张发票。如何使其循环所有发票

 def generate(self):
        Invoice = self.env['account.invoice']
        inv = Invoice.browse(Invoice.search([]))
        invoice = inv and inv[0]
        for inv in invoice:
            root = etree.Element('000')
            po_code = etree.SubElement(root, '22')
            po_code.text = str(inv.id) or ''
            return root

ProgrammingError: can't adapt type 'account.invoice'

当我们调用self.env['account.invoice'].search([])时,我们将收到一个所有记录的记录集,该记录集存储在
account.invoice
模型中。再次将该记录集放入
browse
方法是多余的,因为该方法还返回一个记录集。此外,它不应该工作,因为
browse
方法需要您提供一个id或这些id的列表。查看文档

从现在开始,您只需通过
for
循环对记录集进行迭代即可。每次您都将从该记录集中获得一条记录,因此您只能对其进行操作

def generate(self):
    for record in self.env['account.invoice'].search([]):
        # go ahead with each record

当我们调用self.env['account.invoice'].search([])时,我们将收到一个所有记录的记录集,该记录集存储在
account.invoice
模型中。再次将该记录集放入
browse
方法是多余的,因为该方法还返回一个记录集。此外,它不应该工作,因为
browse
方法需要您提供一个id或这些id的列表。查看文档

从现在开始,您只需通过
for
循环对记录集进行迭代即可。每次您都将从该记录集中获得一条记录,因此您只能对其进行操作

def generate(self):
    for record in self.env['account.invoice'].search([]):
        # go ahead with each record

以您的示例为例,for循环由于某种原因只接受第一张发票,然后停止。我有50个,如果你用的是你问题中的代码,那可能是因为你把return语句放在了循环的主体中。它只会迭代一次,然后返回根,这是肯定的。我有50个,如果你用的是你问题中的代码,那可能是因为你把return语句放在了循环的主体中。它只会迭代一次,然后返回根,这是肯定的。