填報常見問題

概述

本文介紹填報範本製作和預覽時,常見的問題及解決方案。

相關文檔連結:

填報常見報錯程式碼

填報常見效能問題

Excel匯入常見問題

正文域和正文元件

正文域元件換行時會清空輸入值

問題描述:

正文域元件在選中部分文字後按 Enter+Ctrl ,選中的文字會消失,且無法使用 Ctrl+Z 回退。

原因分析:

選中文字後輸入新值或換行,選中值會被改寫清空,屬於正常現象。

正文域輸入換行內容後提交沒有換行效果

問題描述:

正文域元件在輸入換行顯示的內容後,點選提交發現資料庫中的資料未顯示換行。

原因分析:

正文域元件中的換行效果支援提交入資料庫中,但在資料庫中並不顯示。

解決方案:

當把資料欄位拖入範本中預覽即可看到換行效果

正文域內容過多時無法提交入庫

問題描述:

正文域元件內容較多,提交入庫時發現有部分資料未入庫。

原因分析:

內容過多超過 Web 伺服器的限制

解決方案:

更換上傳方式或分批上傳。

儲存格為空時指派 HTML 無效

問題描述:

儲存格設定了「用HTML顯示內容」,當初始內容為空時,手動填寫或者JS指派HTML內容時,儲存格無法正常展現HTML樣式。

1669084254170164.gif

原因分析:

當儲存格初始為空時,該儲存格即使設定了「用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清空暫存後再重新整理。

_g().clear(undefinedfalse);
setTimeout(function({
location.reload();
}, 1000)

this.currentSinglePageModel

問題描述:
按鈕元件插入行時,彈出toast提示js報錯:this.currentSinglePageModel

原因分析:

點選元件插入行,範本會重新整理。範本重新整理時,getWidgetByName 找不到元素。兩者結合,若點選插入行,範本正好重新整理則報錯。

解決方案:

衡量範本中為什麼有頻繁定時操作,是否確實需要,可考慮去掉頻繁定時。

插入刪除行後公式失效

問題描述:

在填報聯動,插入刪除行,資料校驗,資料提交時,出現公式結果和預期不一致。比如下圖所示,想要統計A1擴展格中不為0的資料個數,初始預覽正常,但是修改A1某個值後,count公式的結果就出現了問題。

原因分析:

在填報聯動,插入刪除行,資料校驗和資料提交時,會對頁面相關公式進行重計算,而陣列函式,層次座標和條件篩選函式是不支援重計算的,所以會出現一些結果和預期不一致的問題。

解決方案:

根據實際場景將陣列函式,層次座標,條件篩選轉化為一般的公式。可參考:插入刪除列後公式失效

刪除行按鈕新增提交事件時刪除失敗

問題描述

刪除行按鈕中設定了提交入庫的事件,偶發出現刪除失敗和資料錯位的現象。

原因分析

刪除行動作和刪除提交動作的順序不是固定的,當順序相反時就會出現問題。

解決方案

用普通按鈕設定提交事件,在回呼函式中用JS刪除行。具體可參考記錄填報操作中2.2的設定方式。

填報預覽異常

警告資訊:停止運作此腳本嗎?

問題描述:

填報時彈出警告資訊:「停止運作此腳本嗎?此頁面上的腳本造成 Web 瀏覽器運作速度減慢。如果繼續運作,您的計算機將可能停止回應。」如下圖所示:

原因分析:

彈出如上對話框有兩種原因:

1)範本中包含大量公式。

2)另一種是範本中有大量用於填報的元件。

解決方案一:安裝修復包

微軟官方針對該問題提供了修復包,下載後直接安裝即可,點選下載修復包:jb51-MicrosoftFixit50403.rar

解決方案二:優化範本

1)將所有公式在編輯介面開啟,取消預設勾選的「填報/分析時,保留公式用於計算」,如下圖所示:

2)將需要填報的資料單獨查詢出來,這些資料綁定元件進行填報,其他資料不綁定元件,直接在儲存格中展示,這樣可以大大減少元件的數量,如下圖所示:

將填報範本分為兩部分:「填報部分」和「展示部分」,這兩部分的結構都是一樣的。

  • 填報部分:設定元件,並透過參數過濾出需要修改的那條記錄

  • 展示部分:沒有元件,不用過濾,顯示出全部記錄

  • 參數部分:隱藏查詢按鈕,在下拉框中新增「編輯後事件」,實現自動查詢,詳細介紹參見文檔:JS 實現無需點選查詢按鈕即可自動查詢

3)減少元件的另一種方法,如下圖範例,資料全部展示出來,在產品編號上新增超連結,需要修改該記錄時,點選超連結到另外一張範本單獨進行填報修改。

填報入庫資料跟預覽資料不同

問題描述:
  • 填報中使用了 now() 和 UUID() 等公式,提交後入庫的資料跟前端顯示的資料不同。

  • 填報時使用了層次座標 ,提交後入庫的資料跟前端顯示的資料不同。

原因分析:

  • now() 和 UUID() 等公式提交時都會重新計算一遍,因而入庫後資料會改變。

  • 填報二次計算時不支援層次座標。

解決方案:

  • 新增範本參數 p ,參數值為公式 now(),設計範本時儲存格新增公式 $p,報表填報屬性設定提交時列對應的值設定為參數 $p,即可完美的解決該問題,UUID 同理。

  • 對於包含層次座標的複雜嵌套公式,需要在公式編輯介面將「填報/分析時,保留公式用於計算」取消勾選,避免二次計算。

未提交離開提示沒生效

問題描述:

範本修改或者填寫資料後,在未提交的情況下關閉頁面,沒有提示「有資料未提交」。

原因分析:以下幾種場景不支援觸發該設定:

  • 匯入Excel後未填報或修改過資料 

  • 決策平台內開啟填報範本並進行填報

  • 使用動態參數重新整理頁面

  • 填報頁面被嵌入在了其他頁面中

填報round函式計算精度不正確

問題描述:

在填報場景中使用round函式計算時,可能會出現數位的精度問題,例如公式=round(1.9999,2)的頁面顯示計算結果為2,但是在填報入庫時,填入的卻是1.9999。

原因分析:

在小數位較多的情況下,round函式如果只有2個參數的話,會有精度不準確的問題,需要新增第三個參數true來解決。

解決方案:

新增第三個參數true,就可以解決填報時精度不準確的問題。例如:=round(1.9999,2,true)

在範本事件中設定的公式,無法獲取填報值

問題描述:

在範本各種JS事件或者範本訊息插件設定介面中,呼叫公式時,無法獲取到最新填報的值。

原因分析:

11.0.5 版本前,公式獲取的為初始值,不支援實時獲取預覽後填報的值。

解決方案:

使用JS API獲取需要的值,例如 _g().getCellValue()、_g().parameterEl.getWidgetByName().getValue()等。

填報儲存格形態不生效

問題描述一:

填報資料後,儲存格形態未生效。

原因分析:可能性比較多,可以依次排查以下幾點:

  • 使用了資料字典-資料集,對應資料集sql中不能存在參數

  • 使用了資料字典-公式或者公式形態,則只支援獲取擴展儲存格的第一個值。例如公式形態寫=A1,則獲取的始終是A1擴展出的第一個值

  • 使用了資料字典-公式或者公式形態,則需要排查使用到的值是字串還是陣列類型,不同類型處理方式有所差異,可能會導致問題

問題描述二:

填報分頁後重新查詢,頁面停留在之前頁數。

原因分析:

產品設計的正常邏輯。

解決方案:

在載入結束事件裏用 _g().gotoPage(1) 跳轉第一頁。

填報預覽圖表不顯示

問題描述:

在填報預覽時,圖表不展示,被轉換成了string形式。

解決方案:

常見的排查步驟如下:

1)JAR 包環境排查,確定設計器與伺服器的 JAR 包是否一致。

2)插件環境排查,確定是否有衝突的插件。

3)圖表變為字串排查,有可能是圖表在填報暫存下儲存為字元。

直接顯示元件與元件初始化後事件報錯

問題描述

在範本 Web 屬性中填報頁面設定下勾選直接顯示元件後

如果元件初始化後事件中使用到 getWidgetByname,getWidgetByCell 等API會有報錯: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樣式。

1648611932983777.gif

原因分析:

當儲存格初始為空時,該儲存格即使設定了「用HTML顯示內容」,也不會被標記為HTML顯示。因此,在後續指派時,不會有HTML效果。

解決方案:

可以在儲存格中輸入一個空格作為預設值,確定儲存格初始化時有內容。

1662358315787893.gif

填報或者匯入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的程式碼哪裏有問題。



附件列表


主題: 填報應用
  • 有幫助
  • 沒幫助
  • 只是瀏覽
中文(繁體)

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

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

不再提示

9s后關閉

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

反馈已提交

网络繁忙

反饋已提交

網絡繁忙