在元标记中使用嵌入式字段表达式

您可以将当前和先前字段值标记嵌入到表达式标记本身中。确保字段值不包含单引号或双引号。如果字段值包含奇数个单引号或双引号,该值可能会导致表达式错误;这样将不会正确验证 EmailPlusTemplateIf 模板。这是 EmailPlus 程序包中的已知局限性。

较好的方法是使用 EmailPlus 函数来对字段值进行求值。如果您比较字段值,请使用 quotemeta() Perl 函数来转义任何非字母数字字符,以确保对表达式进行正确求值。例如,如果字段值不包含单引号或双引号,那么会对以下表达式进行正确求值:

#@expression::if (#?Description?# ne #%Description%#) { “Description field has changed\n”.#%Description%#; }@#
但是,如果您不确定字段值是否将包含单引号或双引号,那么以下示例是可使用的较好表达式:
#@expression::if (quotemeta(Gfv(“Description”)) ne quotemeta(Gfov(“Description”))) { “Description field has changed\n”.Gfov(“Description”); }@#

作为另一示例,假设您打算显示缺陷记录的提交日期,但是您不想使用缺省日期格式,而是希望以不同格式显示日期。以下是使用元标记的简单表达式示例:

#@expression::use Date::Format;use Date::Parse; ctime( str2time( #?SubmitDate?# ));@#

这可扩展为以下示例。它是句法上有效的表达式。将会返回日期对象。

#@expression::use Date::Format;use Date::Parse; ctime( str2time( “2010-07-12 10:45:18” ));@#

对该表达式进行求值时,它会返回将替换到输出消息中的以下信息:

Mon Jul 12 10:45:18 2010

下表列出了在元标记内扩展原有字段值或当前字段值时返回的各种数据类型。

表 1. 元标记中返回的 EmailPlus 数据类型
字段类型 返回的表达式
整数 整数,例如,54
日期时间 采用“YYYY-MM-DD hh:mm:ss”格式的 24 小时日期字符串,例如,“2012-10-20 15:23:04
SHORT_STRING、MULTILINE_STRING、ID、STATE、RECORDTYPE、DBID、REFERENCE 以及未指定的任何其他类型 用双引号括起来的字符串值,例如:"some text"。将正确处理原始字段值中嵌入的用双引号括起来的字符串,以产生句法上正确的字符串值。
引用列表 对用双引号括起来的引用值数组的引用,例如,["value 1", "value 2" ]

反馈