1. 最常见根据人的id带出人的任职,最高教育经历,(聘任为是)专业技术职务信息

代码

{"form_relations": [{
"default": {
"expression": "EMP()['id']"
},
"value_onchange": [

{
"expression": "EMP(employee_id=employee_id)",
"key": "emp_data"
}, {
"expression": "emp_data.get('number')",
"key": "number"
},
{
"expression": "EMPPRIMARYJOB(employee_id=employee_id)",
"key": "cur_job"
}, {
"expression": "cur_job['position_id']",
"key": "position_id"
}, {
"expression": "cur_job['department_id']",
"key": "department_id"
}, {
"expression": "cur_job['unit_id']",
"key": "unit_id"
}, {
"expression": "cur_job['job_grade_id']",
"key": "job_grade_id"
}, {
"expression": "cur_job['job_step_id']",
"key": "job_step_id"
},{
"expression": "TODAY()",
"key": "date"
}, {
"expression": "HIGEDU(employee_id).get('education')",
"key": "education"
},{
"expression": "MODELGET('TechnicalSkills',is_recruit=True,employee_id=employee_id).technical_skills_name",
"key": "technical_skills_name"
}],
"key": "employee_id"
}]}

其中:employee_id是人id的key,默认当前登入人,它的变化会掉value_change事件,会带出基本信息(人员编码number)

任职信息cur_job (unit_id单位,departmen_id部门,position_id岗位,job_grade_id职等,job_step_id职级),

同时带出填报的时间字段date,最高教育经历,技术职务等于是的聘任信息

需要注意:cur_job,emp_data为中间变量,赋值情况过多,需要找中间变量过渡存储下


2. 根据岗位带出部门,单位

代码块

{"form_relations": [{

"value_onchange": [{
"expression": "POSITION(position_id).get('parent_id')",
"key": "department_id"
} ,{
"expression": "POSITION(department_id).get('subordinate_unit_id')",
"key": "unit_id"
} ],
"key": "position_id"
}]}


其中: position_id是岗位id变化会引起部门单位变化


3. 调云函数

{
"expression": "PLUGIN('云函数名称XXXX',{})",

"key": "form_default_value"
}

form_default_value为云函数返回值


4.  调API


{
"expression": "API('云函数名称',{'model':'EmployeeAction'参数XXXX等等})",
"key": "form_default_value"
}


form_default_value为云函数返回值

5. 如果获取的时候不存在然后想继续获取可以用python写法 A.get(xxxx) if A else None


{
"expression": "MODELINFO('EmployeeEducation',is_first='1',employee_id=employee_id)[0].get('education') if MODELINFO('EmployeeEducation',is_first='1',employee_id=employee_id) else None",
"key": "education"
}

简单写法:

MODELGET('EmployeeEducation',is_first='1',employee_id=employee_id).get('education')

or 

MODELGET('EmployeeEducation',is_first='1',employee_id=employee_id).education


此时假如没有对应的信息 直接会返回None,系统会处理空值


推荐使用 MODELGET来获取单个对象值,需要获取列表使用MODELINFO


6. 字段属性控制

流程中想配置当job_name字段有值时job_category必填,需要在info层job_category字段的options里配置required


示例:   "required": "=function(){return FORM().data.job_name?true:false}"


其中想在流程子表中拿到主表的配置是:BASE_FORM().data.对应的key



7. 测试公式是否正确


api:  execute.formula.preview


参数 :  {"formula":"EMP()"}



以上是常用方法,具体详情可参考info层 wiki:Info元数据


8. 补充带出常见的带出一级,二级三级部门公式


用到的公式为DepartFind

调用公式截图为:假设获取一级部门的id及name,则配置方法为:

代码块

代码块

{"form_relations": [{

"value_onchange": [{
"expression": "DepartFind(department_id).get(1,{}).get('id')",
"key": "first_depart_id"
} ,{
"expression": "DepartFind(department_id).get(1,{}).get('name')",
"key": "first_depart_name"
} ],
"key": "department_id"
}]}







  • 无标签

2 评论

  1. 张国良 发表:

    感谢伟达提供的神贴。这完全是贴近实施顾问的业务写的,基本可以直接复用。流程表单带字段这个事,实施顾问可以参照着自己动手搞定了。

    1. 罗银秀 发表:

      老师,这个用在流程表单上要怎么使用呀?新建一个一级部门的字段,然后对这个字段做关联嘛?