如果因某些情况你的公式并不会在数据创建时就触发,希望数据保存后可以自动重算公式的话,你可以考虑利用程序帮助你在数据保存后自动运行公式重算。
步骤一: 打开 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();
请将Key Field填入你表单的Key Field id,此信息可以从Javascript 工作流程编辑器中找到,或是你可以从 数据库定义文档查询。
以这份文档中所用的表单范例来说,这一进程式码应写为
var nodeId = param.getNewNodeId(3000210);
并且将 '/tab_path/sheet_path'改成您自己表单的页签及表单路径。
例如 如果你的表单网址为 'www.ragic.com/sample/sales/3',那这一进程式就会写为:
var path = '/sales/3';
如果你只想要重算指定的字段公式,而非全部字段的公式的话,那你可以把这一进程式码
entry.recalculateAllFormulas();
改成
entry.recalculateFormula(field id);
例如只针对某三个字段(字段id: 1000001、1000002、1000003)进行公式重算,
将要重算的字段其id填入field id,一个字段为一行, 所以要重算三个字段的公式则会写成:
entry.recalculateFormula(1000001); entry.recalculateFormula(1000002); entry.recalculateFormula(1000003);