Openerp 如何在Odoo中删除窗口操作?

Openerp 如何在Odoo中删除窗口操作?,openerp,odoo-10,Openerp,Odoo 10,我创建了一个模块,在其中我添加了窗口操作,现在在另一个模块中我想删除该窗口操作。有没有办法删除/隐藏窗口操作 假设以下是sale base模块中可用的操作,我想在我的自定义模块中删除它 发票订单 ir.actions.act\u窗口 销售、预付款、付款、投资 形式 形式 新的 发票订单 客户端\u操作\u多 行动 销售订单 我已经测试过了,它可以正常工作。您只需删除此ir.value记录 self.env.ref('sale.sale_order_line_make_invoice').un

我创建了一个模块,在其中我添加了窗口操作,现在在另一个模块中我想删除该窗口操作。有没有办法删除/隐藏窗口操作

假设以下是sale base模块中可用的操作,我想在我的自定义模块中删除它


发票订单
ir.actions.act\u窗口
销售、预付款、付款、投资
形式
形式
新的
发票订单
客户端\u操作\u多
行动
销售订单

我已经测试过了,它可以正常工作。您只需删除此
ir.value
记录

self.env.ref('sale.sale_order_line_make_invoice').unlink()
下拉列表为空

要使其自动发生,您需要进行以下更改:

创建xml

<?xml version="1.0"?>
<openerp>
    <data noupdate="1">
        <function model="*model_name*" name="_test_function"/>
    </data>
</openerp>

祝您好运

您可以删除正在“创建”此操作的
ir.values
记录。有两种(当然还有更多的)可能做到这一点

  • 使用xml/外部ID删除

    条件:
    ir.values
    记录必须有一个外部ID。删除模块需要另一个作为依赖项

  • 
    
  • 通过搜索删除

    条件:您需要一些东西来搜索记录,例如名称

  • 
    
    最简单的方法是使用js删除它。当我还是初学者的时候,我使用过js,但现在应该有更专业的方法来实现这一点。我将为您搜索它如果您取消此操作与多记录的链接怎么办?无论如何,在安装模块时必须删除该记录,这样对我们来说就没问题了。@Dachi:删除模块的第二次更新后会发生什么?更新完成了吗(没有阻塞错误)?我问是因为我真的不知道。我只知道,我的解决方案应该会在日志中引发错误,但更新应该运行到底。我们可以先测试记录是否存在,然后删除它,我还没有测试它是否存在错误,因为我现在还没有完成这样的任务,但我编写的代码与我第一次运行时测试的代码一样工作。很好的问题。回答得不错,但我更喜欢python端的这类工作。我是一个非常后端的家伙:D。但正如你在我的回答中所问的那样,这会产生错误吗?您的第一个示例将引发错误imhoIt应该在日志中引发错误,但是模块更新过程应该贯穿始终。我在Odoo7-10中使用这种方法已经有3年了。所以更好的版本是检查记录是否存在,然后安全地删除它,我认为您的第二个示例将非常有效。但第一个例子对我来说是糟糕的代码,当出现错误或警告时,我会感到讨厌
    @api.model
    def _test_function(self):
        self.env.ref('sale.sale_order_line_make_invoice').unlink()