编辑: 过于眷恋 | 2019-07-06 |
1 问题背景 本例开发一个简单的请假申请功能,包括创建及编辑请假单,请假单查找,请假审批流程,本节拟定的请假单包括如下信息:? 1)申请人:申请人默认是当前登录用户,必填项.? 2)请假天数:可以是小数,必填项.? 3)开始日期:开始休假的日期,必填项.? 4)请假事由:一段文本,描述请假事由,可以不填. (用户运用熟练后,可以自行添加其他信息) 我们需要开发下述对象:? 1)请假单对象:将请假单保存到数据库,以及能从数据库查找请假单.? 2)请假单视图:查找、编辑请假单的画面,包括列表(tree)和表单(form)两个视图.? 3)菜单:准备开发三级菜单:请假申请/请假单/请假单1.点击 请假单1 时,进入请假单列表视图,可以查找或创建请假单.? 4)请假单动作(Action):请假单动作把对象、视图、菜单关联到一起. 2.2 配置详解 2.2.1 创建请假对象 首先我们要给当前用户赋予开发权限,用系统默认的超级用户Admin登陆,然后点击菜单:设置/用户/用户,选择要赋予开发权限的用户,点击 编辑 按钮,在 应用程序 里选择 设置 ,然后在 易用性 里勾选 技术特性 ,点击 保存 . 1)点击菜单:设置 /技术/ 数据库结构/模型,点击 新建 按钮,创建请假单对象.? 2)对象名:请假单 对象:x_qingjd? 3)字段:包括四个字段,申请人(x_shenqr),请假天数(x_tians),开始日期(x_kaisrq),请假事由(x_shiyou).? 4)注意:从界面上创建对象时,对象及字段标识符必须是x_开头,后面还会介绍编写代码来创建对象,编写代码创建对象时,就没有这个限制. 创建请假单对象及创建字段的参考画面如下: 点击 添加一个项目 逐个创建字段: 首先添加 申请人(x_shenqr) 这个字段,各种选项如下所示: 本画面中的 字段类型 在后面的 openerp对象 章节会讲到, 对象关联 通俗的讲,就是该字段里面的内容是从哪个对象里取值,本字段 申请人 是从 用户 里取值,所以这里就填 用户 所对应的对象 res.users . 然后再用同样的方法逐渐创建其他字段,如下: 点击 保存 ,这样 请假单对象 及其字段就创建完毕. 创建视图 创建好对象后,只是在数据库里有 请假单 这张表,要能在界面上显示这张表,还需要为这个对象创建视图. 点击菜单:设置/技术/用户界面/视图,点击 创建 按钮,依次创建请假单列表(tree)和请假单表单(form)两个视图. 请假单列表: 视图名称:请假单列表 视图类型:树形列表(tree)? 对象:x_qingjd,即刚才创建的请假单对象,如果填写的对象标识符不正确的话,保存时会提示错误.子栏位和继承视图不填.? 优先级:1,Action通常会关联到多个视图,优先级表示多个视图的显示顺序,数字越小越先显示.通常列表总是最先显示,其次是表单.? 视图结构:视图结构是视图中最重要的部分,也是最复杂的部分.视图结构定义要在视图中显示哪些字段,及显示属性(如只读、必填、隐藏等).Select=
1 表示,在列表视图中,可以按该字段查找资源(记录). 1)请假单列表视图树形视图结构如下: 同理创建 请假单表单 视图. 视图名称:请假单表单 视图类型:表单(form) 对象:x_qingjd 优先级: 2)请假单表单视图内容如下: 2.2.2 创建菜单和Aciton 创建菜单,点击设置/技术/数据库结构/模型,查找刚才创建的 请假单 对象,点击打开,在表单的下方有个 创建菜单 的按钮,点击进去. 进去后,点击 上级菜单 右边的下拉按钮,点击 创建并编辑 ,新建一个 请假申请 的父菜单,各字段含义如下:? 1)完整路径:不用填,系统自动生成. 2)菜单:请假申请,用于菜单显示的文字. 3)序号:在菜单列表中的显示位置,数字越小越显示在上位. 4)上级菜单:由于本菜单式顶级菜单,不要父菜单. 5)动作(action):点击菜单时将触发的Aciton,本菜单仅仅是父菜单,不触发Aciton,故不填. 6)组:只有这里定义的组(group)才能看见本菜单,如果不填,表示任何组都可以看到.暂时不考虑菜单权限,故而不填. 点击 保存 . 父菜单建好后,按下图创建 请假单 菜单.点击 创建菜单 按钮,系统会自动创建菜单和菜单对应的Action.该Action访问请假单对象,依次调用请假单列表和请假单表单显示数据. 再点击 创建菜单 ,创建二级菜单 请假单 的下级菜单: 创建完毕后,点击菜单:设置/技术/用户界面/菜单项.可以看到 请假申请 是顶级菜单, 请假申请/请假单 是二级菜单, 请假申请/请假单/请假单1 是三级菜单. 点击 请假申请 ,可以查看该菜单的详细信息:因为 请假申请 是顶级菜单,所以其完整路径就是 请假申请 ,而 请假单 是其子菜单,所以在子菜单一栏会显示 请假单 这一项. 同理可以查看 请假申请 的子菜单的详细信息: 请假单1 是最下级菜单,所以其子菜单一栏为空,其路径是 请假申请/请假单/请假单1 . 揭开Action的面纱 前面介绍过,是Action把对象、视图、菜单等各个元素集成到了一起,那么Aciton到底是个什么东西呢? 点击菜单:设置/技术/动作/窗口动作,在动作对象中输入 x_qingjd 查询,得到 请假单1 动作,点击打开.从Action编辑画面,可以看到,Action关联了对象(x_qingjd)、视图(请假单列表和请假单表单),还有其他一些属性字段. 上述画面中各字段的含义,参见后文的 菜单和动作 章节. 2.2.3 权限配置 在实际工作中,经理能看到所有下属递交的请假单,而下属自己只能看到自己递交的请假单,所以这里要进行权限配置. 首先创建一个 经理 用户和两个 员工 用户,点击菜单:设置/用户/用户,点击创建,写好Name和电子邮件地址,其他暂时不填,如下: 用户创建完毕后,再对这三个用户进行分组.首先要创建一个 审批组 ,点击菜单:设置/用户/组,点击 创建 ,填好各项如下所示,因为事先创建好的用户中,经理负责审批,所以在用户栏里添加 经理 这一个用户: 点击 保存 ,然后再创建一个 员工组 ,如下所示: 分组好了后,要让 请假单 这个对象与这两个组相关联,也就是这两个组里有权限用到 请假申请 这个功能,我们还需进行如下操作:点击设置/技术/数据库结构/模型,选择点击 x_qingjd 对象,然后在访问权限一栏里添加刚才创建的两个组: 点击 保存 . 系统并不能自行的进行权限设置,还需要用户设置一定的安全规则.点击菜单:设置/技术/安全/设定/记录规则,点击 创建 ,新建的内容如下: 这里规则定义里的内容是: 填完后,点击 保存 ,这样员工自己只能看自己的请假申请,而经理可以看到所有人的请假申请. [('