用友网络科技股份有限公司NCC企业绩效Excel表样设计(24)属性函数文档作者:罗嘉版本NCC21111引言NCC产品里,表样设计的自由度越来越高,整个表样的设计都在Excel端完成。看起来excel端的表样可以自由发挥、天马行空,但其实整个表样设计需要非常严谨。表样的设计好坏,直接关系后续业务规则,控制规则的设置难易;影响整个表的运行效率。好的表样可以减少后续问题发生,增加报表填写的效率,还可以让后续分析简单明了,易于扩展。本系列案例就是希望能帮助预算表样的设计人员理解表样设计功能,提供各种表样的参考设计方法。让企业绩效表样设计入门简单,轻松深入。2应用场景及问题描述表样中需要根据当前单元格的维度(如参数维、行列表头维),取得文字的组合,应该如何设置?比如:1.需要在表格左上角显示:“编制主体:”+公司名称+部门名称,如果是公司编制的时候,只需要“编制主体:”+公司名称2.自动展示浮动区中可变维收支项目自定义项1(收支项目类别)的内容。3解决方案3.1总结1.在excel端设置属性函数,实现任务函数字段、表头维度函数字段的显示。2.如果需要多个属性函数组合显示,就要使用CONCATENATE函数(NCC2111目前不支持最新的CONCAT函数),对于问题1解决方案的函数是:CONCATENATE("编制主体:",GetProperty("任务函数","Task","主体:ENTITY","部门所属业务单元:dept_org_name"),GetProperty("任务函数","Task","主体:ENTITY","主体单元名称:name"))3.可以使用IF函数,配合属性函数和CONCATENATE函数使用,示例:IF(GetProperty("任务函数","Task","主体:ENTITY","是否部门:orgtype3")="Y",CONCATENATE("编制主体:",GetProperty("任务函数","Task","主体:ENTITY","部门所属业务单元:dept_org_name"),GetProperty("任务函数","Task","主体:ENTITY","主体单元名称:name")),CONCATENATE("编制主体:",GetProperty("任务函数","Task","主体:ENTITY","主体单元名称:name")))4.预置维度属性里没有的档案属性,可以在维度属性节点自行增加。注意自定义项不能只选择def1,而是要在手工编辑为def1.name,这样才能显示为自定义项的名称。对于问题2的白头维函数是:GetProperty("","DimLevel","指标:MEASURE","收支项目类型名称:ic_def1.name")5.可使用任务函数和表头维度函数的单元格区域不同,设置时如果提示错误,按照提示信息设置即可。3.2详细步骤3.2.1表头属性函数需要在表格左上角显示:“编制主体:”+公司名称+部门名称,如果是公司编制的时候,只需要“编制主体:”+公司名称通过属性函数,可以使表样显示任务函数/表头维度函数的一些属性。比如任务函数的主体维度,就预置有主体单位编码、主体单位名称等项目可以选择。选择后在表样里,属性函数自动带出所选项目的值。(下左图)任务函数的主体指的是表单编制界面左侧的主体,可以是公司也可以是部门。(下右图)推荐分步设置公司名称、部门名称,再用CONCATENATE函数进行组合。第一步主体单位名称(即部门名称)GetProperty("任务函数","Task","主体:ENTITY","主体单元名称:name")第二步设置部门所属公司名称(即公司名称)GetProperty("任务函数","Task","主体:ENTITY","部门所属业务单元:dept_org_name")添加自定义维度属性的方法注意系统是没有"部门所属业务单元:dept_org_name"字段的,需要自行添加,添加方法如下:1.维度管理节点,修改维度,在右上角增行添加新的维度属性。2.属性编码和属性名称可以自己编写,来源基础档案选择组织_部门,来源属性字段选择PK_org.name。代表的就是部门所属业务单元的名称。3.新的维度属性建立后,在维度管理界面就可以看到这个字段存的值。4.Excel端清除一下缓存,就可以在维度属性里看到新增的“部门所属业务单元”字段。第三步用CONCATENATE函数组合出编制主体:部门所属业务单元名称+部门名称CONCATENATE("编制主体:",GetProperty("任务函数","Task","主体:ENTITY","部门所属业务单元:dept_org_name"),GetProperty("任务函数","Task","主体:ENTITY","主体单元名称:name"))实际到第三步就已经解决问题。自建的维度属性不会影响到公司主体时的取值。为了演示设置方法,我们假定还要进行区分,部门主体要取值公式要和公司主体的取值公式不一样。第四步取到“是否部门”字段GetProperty("任务函数","Task","主体:ENTITY","是否部门:orgtype3")第五步按“是否部门”判断,等于Y的时候执行一个公式,不等于Y的时候执行另外一个公式IF(GetProperty("任务函数","Task","主体:ENTITY","是否部门:orgtype3")="Y",CONCATENATE("编制主体:",GetProperty("任务函数","Task","主体:ENTITY","部门所属业务单元:dept_org_name"),GetProperty("任务函数","Task","主体:ENTITY","主体单元名称:name")),CONCATENATE("编制主体:",GetProperty("任务函数","Task","主体:ENTITY","主体单元名称:name")))3.2.2表头属性函数自动展示浮动区中可变维收支项目自定义项1(收支项目类型)的内容。首先也需要在维度管理中,将指标-收支项目的自定义项1添加为维度属性。之后才能通过维度属性函数引用。在3.2.1章节里,已经详细写了添加新项目的过程,这里就简单写一下。自定义档案定义在维护自定义项目后,在用户定义属性设置节点设置了收支项目的def1使用该自定义项目,确认收支项目的自定义项1这个字段有值。之后在维度管理节点,设置指标的维度属性,增加收支项目类型属性,对应收支项目的def1字段。这里要注意:手工选择只能选择到def1,要自己编辑来源属性字段为def1.name。选择表格内表头的文本区域,填充表头维度函数的属性即可。浮动区将指标作为行维度,注意要设置浮动范围。GetProperty("","DimLevel","指标:MEASURE","收支项目类型名称:ic_def1.name")4注意事项表头维度函数只能设置在表头文本区域中,选择的单元格不对就会提示以下错误信息:表头文本区就是以下截图框内的位置,其行维度或列维度只有一个方向存在维度编码区。