Ragic 有提供默认值功能可以纪录整笔数据的修改日期和时间。 如果只需要纪录单一字段的最后修改日期和时间,则可以利用程序来达成需求。 请依以下步骤设置:
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
独立字段:
填入以下程序代码:
setLastModifiedOnField("/tabname/1", 特定字段 ID, 纪录日期字段 ID);
查询字段ID的方法请参阅这篇文章。
以“销售订单”为例,参阅下图及表格:
字段 | 字段名称 | 字段 ID |
---|---|---|
特定字段 | 订单状态 | 3000814 |
纪录日期字段 | 订单状态更新日期 | 1001818 |
填入对应字段 ID 后的程序代码:
setLastModifiedOnField("/tabname/1", 3000814, 1001818);
在新增一笔数据时,如果特定字段为空值,保存后一样会在记录日期字段生成修改日期,如果希望只在修改时才触发,请将程序代码调整为:
if(param.getOldNodeId(特定字段ID) !== -1){ 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){ setlastmodifiedonsubtablefield( tabname 1, 子表格keyfield, 特定字段id, 纪录日期字段id); }