工作信息下自动带出一级部门杨巧玲yangqln@yonyou.com1引言客户部门级次比较多,人员是放在末级部门下面,想要实现人员入职的时候选择完部门后自动带出一级部门,如何实现?2问题分析在数据库中,部门是树形结构的,有个innercode字段可以区分部门层级,一级部门的innercode是4个字符,如5X2F,则这个部门的下级部门innercode是5X2F再加4位,如5X2FZIKW,下下级部门的innercode是5X2FZIKW再加4位,如5X2FZIKWKLW1,则我们可以根据getcolvalue公式取出一级部门。3解决方案3.1具体实现步骤1)信息集管理-工作信息下增加一个自定义字段一级部门,字符型即可,同步元数据,同步模板2)入职登记下把这个一级部门显示出来,且在部门字段下设置编辑公式:hi_psnjob_h.jobglbdef1->getcolvalue(org_dept,name,innercode,mid(getcolvalue("org_dept","innercode","pk_dept",hi_psnjob_h.pk_dept),0,4))公式解释:这个公式是先取出部门的innercode的前4位,再根据innercode的前4位取部门的名称。3)入职登记下做入职验证部门选择完之后,一级部门会自动带出,无论这个部门选的是2级还是3级,一级部门都可以自动带出。4、注意事项由于是编辑公式,需要编辑才能带出,所有以前已经存在的人员一级部门无法自动带出,需要数据库执行语句带出。updatehi_psnjobsetjobglbdefX=(selectpk_deptfromorg_deptwhereinnercode=(selectsubstr(innercode,1,4)fromorg_deptwherepk_dept=hi_psnjob.pk_dept));以上语句是针对增加的一级部门是参照型,参照系统预制的部门字段。本例中一级部门为字符型,语句需要更改为如下:updatehi_psnjobsetjobglbdefX=(selectnamefromorg_deptwhereinnercode=(selectsubstr(innercode,1,4)fromorg_deptwherepk_dept=hi_psnjob.pk_dept))。