反饋已提交

網絡繁忙

在JS中使用FR公式

1. 概述

有時報表設計時涉及到寫 JavaScript 程式碼,利用 JavaScript 處理某些計算或轉換時特別複雜,比如日期格式化、字串截取更換等等,如利用原生 JavaScript 將當前日期顯示成 “2017 年 02 月 24 日” 這種格式時需要寫如下程式碼:

var da = new Date();
var year = da.getFullYear()+'年';
var month = da.getMonth()+1+'月';
var day = da.getDate()+'日';
if (month.length < 3) month = '0' + month;
if (day.length < 3) day = '0' + day;
var rq=year+month+day; 
alert(rq);

雖然實現了功能,但是程式碼多,且沒有通用性,即需要其他格式,還需要再修改程式碼。那麼在 FineReport 中寫 JavaScript 程式碼有沒有可以簡化程式碼的方式呢?FineReport 中本身就有格式日期時間的函式,可不可以在 JavaScript 中直接呼叫呢?

本文將說明如何在 JavaScript 程式碼中呼叫 FineReport 公式。

2. 方法

2.1 方法一

在 JS 中使用 FineReport 自帶的公式,可以直接用 "${=公式}" 方式,如獲取到當天的日期,可以使用 FineReport 自帶的公式 today():

注:此方法部分公式不支援。

var rq='${=today()}'
alert(rq);

比如我們需要點選按鈕顯示當前日期,在按鈕點選事件中寫 JS 程式碼:

1724316013618756.png

預覽報表即可獲取到當天的日期。

2.2 方法二

可以使用 FineReport 提供的遠端公式 FR.remoteEvaluate('=公式')來執行函式,同樣是概述中的需求,使用此公式的 JS 寫法為:

注:行動端 App 9.0 及之後的版本不再支援 FR.remoteEvaluate(formula) 。

var rq=FR.remoteEvaluate('=format(today(),"yyyy年MM月dd日")');
alert(rq);

比如我們需要點選按鈕顯示當前日期,在按鈕點選事件中寫 JS 程式碼:

1724316134677349.png

可以看到,在 FineReport 中只需要寫一欄程式碼,即可完成跟原生 JavaScript 中多列程式碼同樣的功能。

當執行公式需要傳入參數時,需要對應公式進行字串連結,如下:參數名為:sale,參數值為:孫林

var area=FR.remoteEvaluate('=sql("FRDemoTW","SELECT 地區 from 銷量 where 銷售員=\''+sale+'\'",1,1)');
alert(area);

1724316289306811.png

注:sql 函式中使用的 sql 僅支援查詢語句。

利用這兩種方法,可以很方便地將 JavaScript 程式碼與 FineReport 中的公式進行混用,極大地提高程式碼開發效率。

如果用到部分公式,出錯顯示 This formula is forbiddenSQL,原因為平台開啟了「腳本呼叫公式限制」,關閉即可,但關閉會存在安全風險。詳情可查看:安全防護

1724316425899916.png

附件列表


主題: 二次開發
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
  • 圖片不清晰
  • 用語看不懂
  • 功能說明看不懂
  • 操作說明太簡單
  • 內容有錯誤
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

10s後關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙