关于HTML端SQL报表字段存在特殊字符时的中断空白或报错提示详解

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:2

关于HTML端SQL报表字段存在特殊字符时的中断空白或报错提示详解

【问题描述】

在SQL报表中,如果字段key存在特殊字符,会在不同版本区间产生以下系统现象:

【1】在补丁版本PT-146939 [8.1.0.20230309]及以后,弹出提示:

【2】在补丁版本PT-146939 [8.1.0.20230309]以前,报表空白:

【3】若使用BOS设计器设计的报表,最新版本提示如下:



【业务场景】

业务场景介绍:

当二开插件中SQL语句字段的key包含特殊字符时,HTML在构造表格时,会根据不同版本,产生上述几种不同的影响。但不论是哪个版本,我们都推荐将特殊字符替换。



【原因分析】

注意:这是HTML端会出现的现象

底层原因是出于HTML是基于JavaScript语言所展示的超文本页面,而JavaScript在对象的读取上,存在一个key使用上的微妙不同。

我们用测试代码举例:

可以看到,上述代码中的测试对象包含了7种含有特殊字符做为key的项。

我们使用两个for循环做输出

【第1个for循环】使用js的 [key] 语法输出,让我们看一下结果:

【第2个for循环】使用js的 .key 语法输出,让我们看一下结果:


相信大家对比上面两张图,可以发现问题所在,原生JavaScript使用 .key 语法时,值与我们预定义的不同了,变成了undefined(未定义)

而这就是问题的根因所在。


星空HTML端底层框架在创建报表时,会根据不同的key,实例化创建不同的函数,以 .key 的方式去返回对应的结果,而如果key出现特殊字符,就会导致读取不到正确的值,从而出现上述影响。


【解决方案】

目前最佳的解决方案,我们仍建议将特殊字符做替换。


一、新版本优化PT-146939 [8.1.0.20230309]及后续版本

历史版本中,该问题会以表格空白的形式展示,可能会让使用者产生困惑。

在2023年3月份版本,我们做了一次数据上的优化,以及抛出了对应提示。我们将不含有非法字符的字段做了正常的展示,而将含有非法字符的字段剔除,并抛出对应提示,让使用者可以根据提示,精确定位到哪个字段并作出对应调整。


注:BOS设计器在新版本也不再允许输入特殊字符作为字段key


【疑惑解答】

为什么我们不在代码层面做字段临时替换处理?


原因如下:

【1】特殊字符数量较多且无法预知

为了方便举例,我在上面列出了7个特殊字符,其中甚至包含了表情符号。可见7种特殊字符都会出现undefined的情况,而实际上,输入法的特殊字符何止7种?正是这种不可预知性,让代码层面做替换的方案显得意义不大。

【2】特殊字符对系统的健壮性无益

从代码层面来看,特殊字符作为key,本身就存在不合理性

【3】特殊字符可能存在其它意义导致解析异常

在逻辑表达式中,&&代表且,||代表或,诸如此类,特殊字符的意义广泛,实际上并不利于后续维护,可能会导致其它影响数据的问题


综上,出于系统的健壮性以及后续维护考虑,建议不使用特殊字符作为SQL字段的key以确保报表的正常显示。

(英文或英文拼接下划线,是比较推荐的代码风格,或者也可使用大小驼峰做辨识,例如:test_key、testKey)



【延伸阅读】

HTML5如何设置SQL报表字段名称(带特殊字符)


https://vip.kingdee.com/link/s/l0T1g


关于HTML端SQL报表字段存在特殊字符时的中断空白或报错提示详解

【问题描述】在SQL报表中,如果字段key存在特殊字符,会在不同版本区间产生以下系统现象:【1】在补丁版本PT-146939 [8.1.0.20230309]及以...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息