我试图在保存的搜索中从公式字段中获取值。我得到了所有的结果,然后把它们循环起来。
for(key in itemReplenishResults){
log.debug("Single Data", JSON.stringify(itemReplenishResults[key]));
var thisNumber = Number(itemReplenishResults[key].getValue("formulanumeric_1"))
}如我所料,读取单个数据的日志;
{
"recordType": "inventoryitem",
"id": "2131",
"values": {
"itemid": "ITEMCODE",
"displayname": "DISPLAYNAME",
"salesdescription": "SALESDESCRIPTION",
"type": [
{
"value": "InvtPart",
"text": "Inventory Item"
}
],
"location": [],
"locationquantityonhand": "",
"locationreorderpoint": "0",
"locationpreferredstocklevel": "1",
"formulatext": "Yes",
"formulanumeric": "1",
"locationquantityonorder": "",
"formulanumeric_1": "1",
"formulatext_1": "Yes"
}
}但是thisNumber的值返回为0。我不明白为何这是行不通的?
发布于 2019-08-21 16:54:09
thisNumber为0的原因是列formulanumeric_1实际上不存在,因此Number()将空值转换为0。
问题所在
公式列在内部都是相同的,这就是为什么不能单独直接获取它们的值的原因。例如,如果搜索中有两个公式(数值)列,则两个内部列名都将是“公式化数字”。因此,使用getValue('formulanumeric')只会得到第一个公式值。
如您所见,记录结果对象将输出不正确的名称。如果您记录Result.columns,您将看到列名实际上是相同的。
你的选择
注意:如果使用第一个选项,则必须小心重新排序初始搜索中的列,因为这将影响结果中的索引。
发布于 2019-08-21 13:37:01
在处理公式字段时,我总是使用列索引值。下面是我的一个例子。这与我创建的第五列相匹配(当然从0开始)。希望这能有所帮助。
transactionSearch.run().each(function(r){
var var1=r.getValue(r.columns[5]);
var var2=r.getValue(r.columns[6]);
var var3=r.getValue(r.columns[7]);
var var4=r.getValue(r.columns[8]);
var var5=r.getValue(r.columns[9]);
return true;
});https://stackoverflow.com/questions/57549910
复制相似问题