Ragic 有提供默认值功能可以纪录整笔数据的修改日期和时间。
如果只需要纪录单一字段的最后修改日期和时间,则可以利用程序来达成需求。
请依以下步骤设置:
在任意表单名称上右键点击,选择“ JavaScript 工作流程”;或者在任意页签上右键点击,选择“ Global JavaScript 工作流程”。



独立字段 :
function setLastModifiedOnField(pathSheet, observeField, recordField) {
if (param.getOldValue(observeField) !== param.getNewValue(observeField) || param.isCreateNew()) {
var today = new Date(new Date().getTime() + account.getTimeZoneOffset());
function pad2(n) { return n < 10 ? '0' + n : n }
var fmtValue = today.getFullYear() + "/" +
pad2(today.getMonth() + 1) + "/" +
pad2(today.getDate()) + " " +
pad2(today.getHours()) + ":" +
pad2(today.getMinutes()) + ":" +
pad2(today.getSeconds());
var query = db.getAPIQuery(pathSheet);
query.addFetchDomains(recordField);
var entry = query.getAPIEntry(response.getRootNodeId());
entry.setFieldValue(recordField, fmtValue);
entry.save();
}
}
子表格字段 :
function setLastModifiedOnSubtableField(pathSheet,observeSubtableKeyField, observeSubtableField, recordField) {
var list = param.getSubtableEntry(observeSubtableKeyField);
var entry = param.getUpdatedEntry();
var today = new Date(new Date().getTime() + account.getTimeZoneOffset());
function pad2(n) { return n < 10 ? '0' + n : n }
var fmtValue = today.getFullYear() + "/" +
pad2(today.getMonth() + 1) + "/" +
pad2(today.getDate()) + " " +
pad2(today.getHours()) + ":" +
pad2(today.getMinutes()) + ":" +
pad2(today.getSeconds());
for (var i = 0; i < list.length; i++) {
if(list[i].getOldValue(observeSubtableField) != list[i].getNewValue(observeSubtableField) && (list[i].getOldValue(observeSubtableField) !== null || list[i].getNewValue(observeSubtableField) !== "" )){
var subRootNodeId = list[i].getSubRootNodeId();
entry.setSubtableFieldValue(recordField, subRootNodeId, fmtValue);
entry.save();
}
}
}

若表单路径为:https://www.ragic.com/accountname/tabname/1?PAGEID=wSM (忽略后面的 ?PAGEID=wSM 部分)
独立字段:
填入以下程序代码:
setLastModifiedOnField("/tabname/1", 特定字段 ID, 纪录日期字段 ID);
查询字段 ID 的方法请参阅这篇文章。
以“销售订单”为例,参阅下图及表格:

| 字段 | 字段名称 | 字段 ID |
|---|---|---|
| 特定字段 | 订单状态 | 3000814 |
| 纪录日期字段 | 订单状态更新日期 | 1001818 |
填入对应字段 ID 后的程序代码:
setLastModifiedOnField("/tabname/1", 3000814, 1001818);
在新增一笔数据时,如果特定字段为空值,保存后一样会在记录日期字段生成修改日期,如果希望只在修改时才触发,请将程序代码调整为:
if(param.getOldNodeId(特定字段ID) !== -1 || param.getNewValue(特定字段ID) !== ""){
setLastModifiedOnField("/tabname/1", 特定字段ID, 纪录日期字段ID);
}
子表格字段:
填入以下程序代码:
setLastModifiedOnSubtableField("/tabname/1", 子表格KeyField, 特定字段 ID, 纪录日期字段 ID);
注意:只能选择子表格字段作为“纪录日期字段”。
子表格 KeyField 可以在数据库字段定义文档中找到,参阅以下范例,子表格的 KeyField 为 3001321。

以上图为例:
| 字段 | 字段名称 | 字段 ID |
|---|---|---|
| 特定字段 | 采购状态 | 1001819 |
| 纪录日期字段 | 更新日期 | 3001312 |
填入对应子表格 KeyField 及字段 ID 后的程序代码:
setLastModifiedOnSubtableField("/tabname/1", 3001321, 1001819, 3001312);
在新增一笔数据时,如果特定字段为空值,保存后一样会在记录日期字段生成修改日期,如果希望只在修改时才触发,请将程序代码调整为:
var paramList = param.getSubtableEntry(子表格KeyField);
var list = paramList.toArray();
for(var i = 0; i < list.length; i ++) {
if(paramlist[i].getOldNodeId(特定字段id) !== -1 || param.getNewValue(特定字段id) !== ""){
setLastModifiedOnSubtableField("/tabname/1", 子表格keyfield, 特定字段id, 纪录日期字段id);
}
}
完成编辑后请务必保存再离开。
备注:
1. 如果保存时出现类似:TypeError: null has no such function "addFetchDomains" in at line number 25的错误,请检查确认 /tabname/1 是否有误。
2. 会根据帐号设置中所设置的公司所在时区来纪录字段更新日期和时间。