-
1505121235 数据老手Lv5
发表于2020-5-22 14:06
楼主
本帖最后由 1505121235 于 2021-4-16 10:57 编辑
1.简介
2.宏应用的场景
2.1 表头中使用宏
2.2 固定表元中使用宏
2.3 计算公式使用宏
3.已知是宏,如何解析?
4.要注意的情形
1.简介
关键字:宏、宏引用
很多地方都借用了"宏"这个工具,它是一个约定的标记,赋予该标记以特定的逻辑含义。在I里面,宏通常用两个百分号,中间加上宏名,来构成一个对该宏的引用。目前宏引用广泛用于表头文字内容等地方,可以方便快捷的获取并显示系统常用信息,如%year%可以获取当前报表期所在年份,%username%可以获取当前报表户的名称,%userid%可以获取当前报表户代码。
2.宏应用的场景
2.1 表头中使用宏
支持文字中出现%宏名%引用任意四种宏(表元宏、计算指标、报表参数和特殊宏)。
支持文字中出现%宏名%引用任意四种宏(表元宏、计算指标、报表参数和特殊宏)。
不同的宏引用方式不一样,如
(1)表元宏直接使用表元名即可,如B1->C3。
(2)计算指标可以直接通过%计算指标名%的方式出现在计算公式中。
(3)报表参数通过@报表参数引用宏,而不是%%。
(4)计算公式中不支持形如YEAR/T1等的系统内置特殊宏引用,因为可以直接使用相应的公式。
3.已知是宏,如何解析?
给定宏名和表元名,按如下顺序和规则解析宏(一旦匹配规则,就不再继续其后其他的解析过程):
(1)判断是否是表元名,如果是变量表元,取其值(如果是关联了代码组的字符串表元,按其设置显示代码或文字串),如果是固定表元,取其显示内容。
(2)判断是否是计算指标名,如果是,计算出该指标对应的表达式的值。
(3)判断是否是报表参数名,如果是,计算出报表参数表达式对应的值。
(4)特殊宏解析。目前主要是一些关于报表期和报表户的宏,有:%YEAR% %HALFYEAR% %JIDU% %MONTH% %HALFMONTH% %XUN% %WEEK% %DAY% %USERNAME% %USERID% %5DAY% %ABBQ%以及它们的一些简写形式。最近即将加入宏%UPTIME%,表示任务最近一次修改保存的时间。
宏名 | 返回值示例 | 含义 | 备注 | 别名 |
YEAR | "2009" "二〇〇九" | 当前报表期所在年份 | 当宏名为YEAR(全大写)时,数字转为大写形式 | |
HALFYEAR | "上" "下" | 半年当前报表期报所在半年 | 返回值串为"上"或"下",仅在半年报时有效 | |
JIDU | "03" "零三" | 季报当前报表期所在季度 | 宏名字母全大写时,数字转为大写形式,仅对季报 | JD |
MONTH | "06" "十一" | 当前报表期所在月份 | 对月报、13月报、半月报、旬报、周报、5日报、年周报有效 | |
HALFMONTH | "上" "下" | 半月报当前报表期所在半月 | 仅对半月报 | |
XUN | "上" "中" "下" | 旬报当前报表期所在旬 | 仅对旬报 | |
WEEK | "01" "04" "零三" | 周报当前报表期所在周 | 仅对周报,宏名全大写时,数字转为大写 | |
DAY | "02" "29" "30" "三十一" | 日报当前报表期所在日 | 仅对日报,宏名全大写时,数字转为大写 | |
USERNAME | "总局""湖北省局" | 当前报表户名称 | NAME MC DWMC | |
USERID | "000000" "42000013210001" | 当前报表户代码 | ID DM DWDM | |
5DAY | "1日-5日""11日-15日" | 当前报表期在5日报中的序 | 仅对5日报 | |
ABBQ | 分析表的报表期起止范围 | |||
UPTIME | "2011-03-07 12:46:39" | 任务最近一次修改保存时间 | 任务每一次修改后保存整个任务时,写当时时间 | |
T1 | "2010" "1989" | 当前报表期所在年份 | ||
T2 | "01" "02" | 所在月份、季度或半年 | 季度时表示当前报表期所在季度,半年报时表示所在半年,月报、 13月报、半月报、旬报、周报、日报、5日报、年周报时表示所在月份 | |
T3 | "01" "02" "26日-30日" | 半月、旬、周,日、5日序 | 半月报时表示所在半月,旬报时表示所在旬,周报时表示所在周,日报时 表示所在日,5日报时表示所在5日。 |
4.要注意的情形
(1)定义计算指标时,计算指标名不要与系统已有的默认可解析的宏重名,否则可能导致计算宏的值时出现歧义而产生不了用户希望的结果。
(2)关于报表期相关宏截取以及大小写:一般的,T1/T2/T3以及year等报表期相关的宏都是区分大小的,全都是大写时返回对应的汉字文字通俗描述,否则返回它对应在报表期串中相应部分。