概述
文本域和文本控件
文本域控件换行时会清空输入值
点击展开更多 |
问题描述: 文本域控件在选中部分文字后按 Enter+Ctrl ,选中的文字会消失,且无法使用 Ctrl+Z 回退。 原因分析: 选中文字后输入新值或换行,选中值会被覆盖清空,属于正常现象。 |
文本域输入换行内容后提交没有换行效果
点击展开更多 |
问题描述: 文本域控件在输入换行显示的内容后,点击提交发现数据库中的数据未显示换行。 原因分析: 文本域控件中的换行效果支持提交入数据库中,但在数据库中并不显示。 解决方案: 当把数据字段拖入模板中预览即可看到换行效果 |
文本域内容过多时无法提交入库
点击展开更多 |
问题描述: 文本域控件内容较多,提交入库时发现有部分数据未入库。 原因分析: 内容过多超过 Web 服务器的限制 解决方案: 更换上传方式或分批上传。 |
单元格为空时赋值 HTML 无效
点击展开更多 |
问题描述: 单元格设置了「用HTML显示内容」,当初始内容为空时,手动填写或者JS赋值HTML内容时,单元格无法正常展现HTML样式。 原因分析: 当单元格初始为空时,该单元格即使设置了「用HTML显示内容」,也不会被标记为HTML显示。因此在后续赋值时,不会有HTML效果。 解决方案: 可以在单元格中输入一个空格作为默认值,确保单元格初始化时有内容。 |
网页框控件
JS 监听事件无法作用于网页框中内容
点击展开更多 |
问题描述: 主模板设置了JS监听事件,但无法监听到网页框里的页面。 原因分析: 主模板的监听事件只能监听到主模板的元素,对网页框页面无效。 解决方案: 在网页框的页面中加上同样的监听事件。 |
网页框地址中的模板名称不能带空格
点击展开更多 |
问题描述: 网页框控件地址栏中的模板名称如果带有空格,预览出现报错:1130004 原因分析: V8.7 及之后版本不支持此功能。 |
复选控件
复选控件多值入库不正确
点击展开更多 |
问题描述: 当填报时存在主键时,即做修改操作,提交成功后却只保留了一个值;填报时不存在主键时,即做添加操作,提交成功后数据库则会录入多条数据。 希望「下拉复选框控件」多选值提交后,能在一条数据中正确显示多个值。 解决方案: 可参考 复选控件多值入库不正确 。 |
下拉树控件
下拉树填报时丢失层级结构
点击展开更多 |
问题描述: 单元格下拉树选择值后填报,入库数据异常增多。 原因分析: 下拉树控件值在转化为单元格值的时候,会丢失层级,分号会统一变为逗号,所以入库时会作为多条数据入库,造成异常。 解决方案: 单元格下拉树目前不支持提交入库。 |
按钮控件
按钮控件过多导致填报页面加载慢
点击展开更多 |
问题描述: 当模板设置了跟随数据扩展的按钮控件,且数据量较大时,由于按钮控件渲染速度较慢,所以就会造成页面加载缓慢。 解决方案: 可参考 按钮控件过多导致填报页面加载慢。 |
插入行/删除行/新增行异常
使用JS插入0行不能触发条件属性判断
点击展开更多 |
问题描述: 使用 _g().appendReportRow(this.options.location, this.options.reportIndex,0) 插入 0 行时,无法触发条件属性重新计算。 原因分析: 11.0.5版本(2022.05.20)开始,取消了条件属性的二次计算,只有页面真的插入行时,才会重新计算条件属性。 |
插入删除行卡顿
点击展开更多 |
问题描述: 插入删除行时,页面卡顿,浏览器崩溃。 原因分析: 插入删除行时,整个页面的公式和行高列宽需要重新计算,如果公式复杂,或者用到了sql()等取数函数,就可能导致页面加载缓慢。 解决方案: 可以在模板预览 url 后增加 async_insert=true 参数,开启插入行页面异步加载。 |
插入行暂存后提交出现空白行
点击展开更多 |
问题描述: 插入行并修改后暂存,使用自定义按钮实现提交,但提交后刷新页面出现空白行。 原因分析: 自定义按钮的提交不会清空暂存,所以刷新后出现问题。 解决方案: 在自定义按钮的提交设置的回调函数中写入js清空暂存后再刷新。
|
this.currentSinglePageModel
点击展开更多 |
问题描述: 按钮控件插入行时,弹出toast提示js报错:this.currentSinglePageModel原因分析: 点击控件插入行,模板会刷新。模板刷新时,getWidgetByName 找不到元素。两者结合,若点击插入行,模板正好刷新则报错。 解决方案: 衡量模板中为什么有频繁定时操作,是否确实需要,可考虑去掉频繁定时。 |
插入删除行后公式失效
点击展开更多 |
问题描述: 在填报联动,插入删除行,数据校验,数据提交时,出现公式结果和预期不一致。比如下图所示,想要统计A1扩展格中不为0的数据个数,初始预览正常,但是修改A1某个值后,count公式的结果就出现了问题。 原因分析: 在填报联动,插入删除行,数据校验和数据提交时,会对页面相关公式进行重计算,而数组函数,层次坐标和条件筛选函数是不支持重计算的,所以会出现一些结果和预期不一致的问题。 解决方案: 根据实际场景将数组函数,层次坐标,条件筛选转化为一般的公式。可参考:插入删除行后公式失效。 |
删除行按钮添加提交事件时删除失败
点击展开更多 |
问题描述 删除行按钮中设置了提交入库的事件,偶发出现删除失败和数据错位的现象。 原因分析 删除行动作和删除提交动作的顺序不是固定的,当顺序相反时就会出现问题。 解决方案 用普通按钮设置提交事件,在回调函数中用JS删除行。具体可参考记录填报操作中2.2的设置方式。 |
填报预览异常
警告信息:停止运行此脚本吗?
点击展开更多 |
问题描述: 填报时弹出警告信息:「停止运行此脚本吗?此页面上的脚本造成 Web 浏览器运行速度减慢。如果继续运行,您的计算机将可能停止响应。」如下图所示: 原因分析: 弹出如上对话框有两种原因: 1)模板中包含大量公式。 2)另一种是模板中有大量用于填报的控件。 解决方案一:安装修复包 微软官方针对该问题提供了修复包,下载后直接安装即可,点击下载修复包:jb51-MicrosoftFixit50403.rar 解决方案二:优化模板 1)将所有公式在编辑界面打开,取消默认勾选的「填报/分析时,保留公式用于计算」,如下图所示: 2)将需要填报的数据单独查询出来,这些数据绑定控件进行填报,其他数据不绑定控件,直接在单元格中展示,这样可以大大减少控件的数量,如下图所示: 将填报模板分为两部分:「填报部分」和「展示部分」,这两部分的结构都是一样的。
3)减少控件的另一种方法,如下图示例,数据全部展示出来,在产品编号上添加超链,需要修改该记录时,点击超链接到另外一张模板单独进行填报修改。 |
填报入库数据跟预览数据不同
点击展开更多 |
问题描述:
原因分析:
解决方案:
|
未提交离开提示没生效
点击展开更多 |
问题描述: 模板修改或者填写数据后,在未提交的情况下关闭页面,没有提示「有数据未提交」。 原因分析:以下几种场景不支持触发该设置:
|
填报round函数计算精度不正确
点击展开更多 |
问题描述: 在填报场景中使用round函数计算时,可能会出现数字的精度问题,例如公式=round(1.9999,2)的页面显示计算结果为2,但是在填报入库时,填入的却是1.9999。 原因分析: 在小数位较多的情况下,round函数如果只有2个参数的话,会有精度不准确的问题,需要添加第三个参数true来解决。 添加第三个参数true,就可以解决填报时精度不准确的问题。例如:=round(1.9999,2,true) |
在模板事件中设置的公式,无法获取填报值
点击展开更多 |
问题描述: 在模板各种JS事件或者模板消息插件设置界面中,调用公式时,无法获取到最新填报的值。 原因分析: 11.0.5 版本前,公式获取的为初始值,不支持实时获取预览后填报的值。 解决方案: 使用JS 接口获取需要的值,例如 _g().getCellValue()、_g().parameterEl.getWidgetByName().getValue()等。 |
填报单元格形态不生效
点击展开更多 |
问题描述一: 填报数据后,单元格形态未生效。 原因分析:可能性比较多,可以依次排查以下几点:
问题描述二: 填报分页后重新查询,页面停留在之前页数。 原因分析: 产品设计的正常逻辑。 解决方案: 在加载结束事件里用 _g().gotoPage(1) 跳转第一页。 |
填报预览图表不显示
点击展开更多 |
问题描述: 在填报预览时,图表不展示,被转换成了string形式。 解决方案: 常见的排查步骤如下: 1)JAR 包环境排查,确定设计器与服务器的 JAR 包是否一致。 2)插件环境排查,确定是否有冲突的插件。 3)图表变为字符串排查,有可能是图表在填报暂存下存储为字符。 |
直接显示控件与控件初始化后事件报错
点击展开更多 |
问题描述 在模板 Web 属性中填报页面设置下勾选直接显示控件后 如果控件初始化后事件中使用到 getWidgetByname,getWidgetByCell 等接口会有报错:CustomJSError:Cannot read properties of undefined 原因分析: 直接显示控件加载要比 JS 事件触发慢导致的。 解决方案: 给 JS 事件加延时,等控件加载完了,再执行代码就不会报错了 初始化事件中嵌套一个延时函数试试,延时函数中不能用 this,需要外面定义好,代码如下: var th=this;setTimeout(function() { 你的代码;(你代码的this换成th)}, 500 |
用 Widget.setValue() 给单元格控件赋值异常
点击展开更多 |
问题描述: 用 Widget.setValue() 给单元格控件赋值异常,但是用_g().setCellValue()直接给单元格赋值就正常。 解决方案: 给存在控件的单元格赋值时,需要使用单元格赋值语句,而不能使用控件赋值语句。 |
控件异常显示为config type cannot be null
点击展开更多 |
问题描述: 模板预览时,偶发出现部分或者所有控件显示为config type cannot be null。 原因分析: 模板设置了自定义的JS刷新页面,同时又在该JS或者其他初始化/加载结束事件中定义了JS获取相关控件。此时由于网络请求先后的不确定性,就可能出现获取控件的JS在页面未刷新完成的情况下就执行了,这时候由于获取不到控件而报错。 解决方案: 为获取控件的JS增加延时,确保页面加载完毕后再执行获取控件的语句。如下图所示: |
决策报表填报使用数据集函数获取不到值
点击展开更多 |
问题描述: 决策报表填报,在填报属性设置界面中,使用了数据集函数(value,ds1.select,ds1.find,ds1.group),提交后发现相应公式未正确执行,导致提交数据异常。 原因分析: 决策报表填报属性设置界面,不支持数据集函数,使用时相关函数的返回值为空。 解决方案: 将数据集函数设置在一个文本控件中进行计算,并在填报属性中直接引用该文本控件获取计算后的值。 |
填报成功事件偶发不生效
点击展开更多 |
问题描述: 火狐浏览器设置了填报成功事件,但是偶发不生效。 解决方案: 通过 about:config 打开火狐浏览器的 dom.allow_scripts_to_close_windows 配置为 true 即可。 |
公式单元格作为主键时删除失败
点击展开更多 |
问题描述 填报属性绑定了某个写了公式的单元格作为主键,删除行提交后,该数据并未从数据库删除。 原因分析 删除行的公式在提交时会二次计算,返回空字符串,所以无法删除对应数据。 解决方案 去除勾选公式的填报/分析时,保留公式用于计算,或者将公式直接写到填报属性中。 |
单元格为空时赋值HTML无效
点击展开更多 |
问题描述: 单元格设置了「用HTML显示内容」,当初始内容为空时,手动填写或者JS赋值HTML内容时,单元格无法正常展现HTML样式。 原因分析: 当单元格初始为空时,该单元格即使设置了「用HTML显示内容」,也不会被标记为HTML显示。因此,在后续赋值时,不会有HTML效果。 解决方案: 可以在单元格中输入一个空格作为默认值,确保单元格初始化时有内容。 |
填报或者导入Excel时报错null/会话失效/发送失败
点击展开更多 |
问题描述: 填报或者导入Excel时报错null/会话失效/发送失败/0。
网络配置原因分析: 例如nginx之类的代理服务器,其一些参数设置会影响请求的转发,如果设置有问题,则会导致报错。可以测试不走代理时的模板,在使用时是否报错来确认问题是否和代理服务器设置有关。 解决方案: 检查代理服务器的参数设置,例如nginx的超时时间参数proxy_send_timeout,上传文件大小限制参数client_max_body_size等,适当调大。 容器配置原因分析: 容器自身有请求超时时间的限制,如果填报或者导入时间过长超过了限制,就会出现报错。 解决方案: 调整容器的超时时间,例如Tomcat可以在/conf/server.xml中,修改connectionTimeout参数值,适当调大。 浏览器插件原因分析: 部分浏览器插件(例如翻译、下载插件)会影响报表请求,造成报错。可以通过更换浏览器来测试问题是否和浏览器有关。 解决方案: 卸载有问题的浏览器插件。 智能运维原因分析: 当工程整体占用内存过高的时候,模板的会话可能会被智能运维清理掉,造成会话失效报错。 可以通过报错时间段的gc日志或者内存管理中的内存情况来判断是否是此情况。 解决方案: 优化模板或者工程来降低内存使用情况。 自定义过滤器原因分析: 对工程做了自定义的filter,可能会影响一些请求,导致报错。 可以检查工程WEB-INF文件夹下是否存在web.xml文件,存在的话备份删除后重启测试,如果问题不再出现,则可以判断为此原因。 解决方案: 由于自定义filter不属于工程本身功能,所以需要根据实际情况自主排查filter的代码哪里有问题。 |