NC65 企业报表借助语义模型取部门人数的方法杜金帅 dujshc@yonyou.com1、引言客户在做统计报表的时候,可能会有需要统计部门人数的需求。如果系统安装了人力资源模块可以通过 HR 取数规则来统计,没有安装该模块的企业则只能通过语义模型做变通来出具数据表了。2、应用场景及问题描述客户想要在企业报表上统计部门的人数,没有启用人力资源模块,报表的函数中没有关于人力的取值函数。3、解决方案设计一个语义模型,将工作记录表作为统计依据,按照部门做分组统计人数。需要注意的是,不同时点的人数可能是不一样的,所以需要将时间因素考虑进去,在不同的计算时点得到各自相应的统计结果。脚本如下:select pk_dept pkd,count(*) num,ismainjob,dr from bd_psnjob where indutydate<=’2018-01-01’ and (enddutydate>’2018-01-01’ or enddutydate is null)group by pk_dept,ismainjob,dr脚本嵌入到语义模型里,并增加一个部门档案的表方便前台展示部门名称;同时,增加两个查询参数,用于限定组织和统计日期。语句上的日期用参数替代。将两个表通过部门主键字段进行连接。部门和人数作为展示字段。在描述器这一步,将组织的参数与语义模型中的组织主键关联起来,并添加一个是否主职的筛选条件,用于区分统计的是主职还是兼职人数。语义模型完成之后,查看预览效果。利用 getdata 函数,将需要展现的数据放在报表中,getdata 公式中用关键字函数替换组织和日期作为筛选条件。最后,在不同的组织和月份测试取值效果。4、注意事项(1)语义模型只能通过 getdata 公式取出来,如果要做在固定表上显示,建议做个动态表将数据都展示出来,然后做跨表取值;(2)设计的语义模型区分了是否主职,如果统计人数时不想区分,要改具体的取值字段把是否主职从语句中剔除。