【问题标题】:Using OpenERP as users and employees management backend使用 OpenERP 作为用户和员工管理后台
【发布时间】:2025-12-27 18:05:06
【问题描述】:

我正在尝试使用 ASP.NET MVC C# 中的 xml-rpc.net 查询 OpenERP 对象以验证用户身份。

string OERP_DB = "openerpdbname";
        string OERP_USER = "user";
        string OERP_PASSWORD = "password";

        IOpenERPLogin OpenERPAccess = XmlRpcProxyGen.Create<IOpenERPLogin>();
        int UserID = OpenERPAccess.Login(OERP_DB, OERP_USER, OERP_PASSWORD);


        String[] condition = new String[] { "login", "=", "someusername" };
        ArrayList lstFilters = new ArrayList();
        lstFilters.Add(condition);

        IOpenErp OpenERPOperations = XmlRpcProxyGen.Create<IOpenErp>();
        var ids = OpenERPOperations.search(OERP_DB, UserID, OERP_PASSWORD, "res.users", "search", lstFilters.ToArray());

        ArrayList fieldsToRead = new ArrayList();
        fieldsToRead.Add("id");
        fieldsToRead.Add("partner_id");
        fieldsToRead.Add("login");
        fieldsToRead.Add("password");
        fieldsToRead.Add("user_email");
        fieldsToRead.Add("company_id");
        fieldsToRead.Add("company_ids");
        fieldsToRead.Add("signature");
        fieldsToRead.Add("menu_id");
        fieldsToRead.Add("groups_id");
        fieldsToRead.Add("login_date");
        fieldsToRead.Add("name");
        fieldsToRead.Add("active");
        var oerp_results = OpenERPOperations.read(OERP_DB, UserID, OERP_PASSWORD, "res.users", "read", ids.ToArray(), fieldsToRead.ToArray());

问题是我正在阅读文档,但不明白如何获取特定对象(如用户)的对象属性。

有一个用于 res.partners 的 Web 服务 CRUD 示例,但没有其他任何示例。

有没有资源可以让我更多地使用 OpenERP 的对象,比如理解 res.xxxxxx 和其他对象类型背后的概念?

【问题讨论】:

    标签: openerp xml-rpc


    【解决方案1】:

    如果您正在寻找给定 OpenERP 模型上可用的字段列表,您最好的信息来源是相应 OpenERP 模块的源代码。

    您应该快速阅读如何构建 OpenERP 模型的基础知识(_columns dict 声明模型类中的各个字段):

    然后您就可以开始浏览代码了,可以在获取源代码副本后离线,也可以通过 Launchpad 的 Web UI(server 7.0addons 7.0

    现在,如果您的需求包括对给定模型定义的编程/动态访问,您需要深入研究 API,特别是 fields_get 方法。

    一个有用的灵感来源可能是众多 OpenERP 客户端库,它们可能会尝试完成与您想做的类似的任务。 Python 中的一些示例:the official openerp-client-libERPeek,以及 Ruby 中的一个示例:OOOR

    【讨论】:

    • 我现在通过浏览“OpenERP\Server\server\openerp\addons\base\”找到了一种非常简单的方法来获取列,但我认为这对于长期来说还不够,所以谢谢您的详细回答。