最新历史版本 :二次开发常见问题 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

Finereport 版本
11.0

1.2 应用场景

本文介绍用户使用代码进行二次开发时,可能会出现的一些问题和对应的解决方法。

2. JS 常见问题编辑

2.1 报错显示无法读取未定义的属性

问题描述:

在给报表中加入一段 JS 代码中,预览报表显示 CustomJSError : Cannot read properties of undefined (reading 'XXXXX') 

如下图所示:

原因分析:

可能是您代码中使用的某个变量不存在,拼写错误。

或者是由于报表创建速度影响,报表块对象没有完全创建,添加的 JS 语句提前执行,从而获取不到对象导致报错,这种情况一般发生在「初始化后」和「加载结束」这种事件中。

解决方案:

如果是语法或者名称错误,可对应修改,如果语法、名称都无错误,那很大可能就是报表创建延迟的问题,这时候可以通过添加一个延迟函数延迟执行从而让代码在报表对象创建完之后执行,

如下所示,给 _g().parameterCommit(); 代码中添加延迟函数:

setTimeout(function() {
_g().parameterCommit();
}, 500)

2.2 错用高版本接口导致的报错

问题描述

在模板中加入 JavaScript 后,预览模板时,报错 CustomJSError : _XXXXXXXX.submit is not a function

原因分析

代码中写的接口或者方法不存在。

解决方法

检查代码中使用的接口有没有拼写错误;检查代码中使用的接口在当前环境下是否支持,如:

  • 10.0 的模板用了只 11.0 支持的接口

  • 旧版决策报表用了只 11.0 支持的接口

检查后对应修改正确即可。版本区别详情可查看:JS API兼容说明

2.3 setCellValue 给单元格赋值不生效 

问题描述

使用单元格赋值接口 setCellValue 给单元格赋值时,出现赋值为空没有效果、或者报错 无法赋值,模板未编辑单元格XX

的现象。

原因分析

可能是单元格上没有内容或者没有被编辑过,预览时页面 html 不会生成这个单元格对象前端元素,导致接口找不到对象。

解决方法

在设计器里编辑一下该单元格,(当单元格左边和上边的导航栏变成灰色时,表示单元格是被编辑过的,如下图所示。如果不想让单元格中有内容但想让单元格被编辑过,可以在单元格中填写内容保存后再删除删除。),预览时就可以生成 html 元素,从而能够使用接口赋值。