若因某些情况导致公式未在数据创建时就触发,而你希望在数据保存后自动重算公式,可以考虑利用程序,在数据保存完成后自动运行公式重算。
步骤一:打开 Javascript 工作流程编辑器
从上方页签列中找到你要增加此段程序代码的表单,点击表单名称旁的三角形符号,并选择 Javascript工作流程。
步骤二:切换至 Post-workflow
步骤三:将以下程序代码拷贝贴上并调整后保存
var nodeId = param.getNewNodeId(Key Field); var path = '/tab_path/sheet_path'; var query = db.getAPIQuery(path); var entry = query.getAPIEntry(nodeId); entry.recalculateAllFormulas(); entry.setIfDoLnls(true); entry.setCreateHistory(true); entry.save();
调整方式:
1. 将 Key Field 填入表单的 Key Field ID,此信息可以从 Javascript 工作流程编辑器(选择 Pre-workflow 时的页面)中找到,或是从数据库定义文档查询。
以上图表单范例来说,这一进程式码应写为:
var nodeId = param.getNewNodeId(3000841);
2. 将 '/tab_path/sheet_path' 改成这份表单的页签及表单路径。
如果你的表单网址为 www.ragic.com/sample/sales/3?PAGEID=wSM (忽略 ?PAGEID=wSM 的部分),将这一进程式写为:
var path = '/sales/3';
3. 如果只想要重算指定的字段公式,而非全部字段的公式的话,则可以把这一进程式码
entry.recalculateAllFormulas();
改成
entry.recalculateFormula(field id);
例如:只针对某三个字段(字段 ID: 1000001、1000002、1000003)进行公式重算,将要重算的字段 ID 填入 field id 中,一个字段为一行, 所以要重算三个字段的公式则会写成三行:
entry.recalculateFormula(1000001); entry.recalculateFormula(1000002); entry.recalculateFormula(1000003);