开发者中心包含此范例模板(按条件统计关联记录的值),请前往开发者中心下载学习。
请创建2个应用,“案件信息”和“客户信息”。
案件信息的必要字段
字段名称 | 字段类型 | 字段代码 | 项目与顺序 |
---|---|---|---|
客户名 | 单行文本框 | 客户名 | |
接受订货准确度 | 下拉菜单 | 接受订单准确度 | 接受订货 内部公示 书面请示 讨论中 |
接受订货金额 | 数值 | 接受订货金额 |
客户信息的必要字段
字段名称 | 字段类型 | 字段代码 |
---|---|---|
公司名 | 单行文本框 | 公司名 |
案件列表 | 关联记录列表 | 关联记录列表 |
小计 | 标签 | |
空白栏 | TotalAmount(元素ID) |
看着这个案件列表,想要对订货金额之类的列项目的进行统计。应用内设置的表格工具虽然具有自动计算功能,但是对关联记录列表的项目的统计,现在的版本还不具有这个功能。所以我们使用js自定义来实现吧。
另外,在关联记录列表的标准设置里,获取的是被关联应用的全部记录。这次我们将考虑带条件的设置情形,比如案件列表, 以“接受订货准确度” 为接受订货以外的记录作为条件。
字段的设置
首先,客户信息应用的表单设置,在关联记录列表字段 “案件列表” 的 “更多筛选条件” 设置里,像下面这样设置当 “接受订货准确度” 为 “接受订货” 以外的记录。
另外在显示统计结果的地方,空白栏的元素ID 设置为 “TotalAmount”,追加在案件列表的最下方。关联记录列表的接受订货金额项目的位置对齐,另外再追加任意宽度的空白栏和 “小计” 的标签。
代码
显示表单的详细页面、编辑页面时计算的范例。
作成JavaScript文件以后,应用到 “客户信息” 应用里。
(function () { "use strict"; var events = ["app.record.detail.show", "app.record.edit.show"]; kintone.events.on(events, function (event) { var clientUserName = event.record.公司名.value; var relatedAppId = kintone.app.getRelatedRecordsTargetAppId("关联记录列表"); var query = '客户名 ="' + clientUserName + '" and 接受订货准确度 not in ("接受订货")'; var outputFields = ["接受订货金额"]; var appUrl = kintone.api.url("/k/v1/records"); var params = { app: relatedAppId, query: query, fields: outputFields, }; var elementId = "TotalAmount"; kintone.api(appUrl, "GET", params, function (resp) { var amount = 0; for (var i = 0; i < resp.records.length; i++) { amount = amount + parseFloat(resp.records[i].接受订货金额.value); } var divTotalAmount = document.createElement("div"); divTotalAmount.style.fontWeight = "bold"; divTotalAmount.style.textAlign = "right"; divTotalAmount.style.fontSize = 12; var wString = String( amount.toFixed(0).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,") ); divTotalAmount.innerHTML = wString + "元"; kintone.app.record.getSpaceElement(elementId).appendChild(divTotalAmount); return event; }); }); })();
代码的解说
为了检索和关联记录列表里设置的条件相同的客户信息应用时,作成了以下的查询。
var query = '客户名 ="' + clientUserName + '" and 接受订货准确度 not in ("接受订货")';
关于接受订货准确度里排除接受订货的记录,关键点是这边的文档里说明的 “接受订货准确度”里检索的not in语句。
应用代码后,输出以下的小计计算的结果。
注意事项
这次的Tips里,我们在关联记录列表里设置的相关的条件,运行这个条件的query。当您需要无条件合计全部记录的时候,只需要把条件的部分去掉,就可以合计所有的记录了。记录件数除以offset(100)的值为需要和服务器进行交互的次数,处理时间和条件无关,和记录件数有关。另外关联记录列表标准是以5件为单位进行翻页,小计行的计算是全部符合条件记录的计算。这些点需要留意。
该Tips在2014年9月版中进行过确认。
回复(2)
可以在字段“案件列表”设置的时候,在“更多筛选条件”中添加一个筛选条件,比如“接受订货预定日” “>=(以后)” “2022-01-01”
引用 kyle 的回复:
我想加入日期条件比如2022-01-01以后该如何设定