首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SuiteScript2.0从保存的搜索公式列中获取值

SuiteScript2.0从保存的搜索公式列中获取值
EN

Stack Overflow用户
提问于 2019-08-19 02:39:31
回答 2查看 3.3K关注 0票数 2

我试图在保存的搜索中从公式字段中获取值。我得到了所有的结果,然后把它们循环起来。

代码语言:javascript
复制
for(key in itemReplenishResults){
    log.debug("Single Data", JSON.stringify(itemReplenishResults[key]));
    var thisNumber = Number(itemReplenishResults[key].getValue("formulanumeric_1"))
}

如我所料,读取单个数据的日志;

代码语言:javascript
复制
{
    "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。我不明白为何这是行不通的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-21 16:54:09

thisNumber为0的原因是列formulanumeric_1实际上不存在,因此Number()将空值转换为0。

问题所在

公式列在内部都是相同的,这就是为什么不能单独直接获取它们的值的原因。例如,如果搜索中有两个公式(数值)列,则两个内部列名都将是“公式化数字”。因此,使用getValue('formulanumeric')只会得到第一个公式值。

如您所见,记录结果对象将输出不正确的名称。如果您记录Result.columns,您将看到列名实际上是相同的。

你的选择

  1. 使用索引直接获取列(如果您关心排序)。 需要(‘N/ search’,函数(搜索){ // A保存的包含多个公式结果列var s= search.load(1234);s.run().each(函数(结果)){ log.debug(result.getValue(result.columns5));log.debug(result.getValue(result.columns1));log.debug(result.getValue(result.columns3);});
  2. 循环遍历每一列(如果您不关心订购)。 需要(‘N/ search’,函数(Search){ // A保存的搜索,包含多个公式结果列var s= search.load(1234);s.run().each(函数(结果){ for (var i= 0;i< result.columns.length;i++) { // Log每列的值按顺序log.debug(result.getValue(result.columnsi);} });});
  3. 手动定义列并引用它们(最通用的选项)。列名必须以“公式化类型”开头,并可附加任何其他内容。 要求(‘N/search’,函数(Search){ var s= search.create({ type:'salesorder',列:{ name:‘formanumeric1’,公式:'CASE > 10然后100 END‘},{ name:’formanumeric2‘,公式:'CASE时> 20然后30 END’});函数( log.debug(result.getValue('formulanumeric2'));/ 30 log.debug(result.getValue('formulanumeric1'));// 100 });};

注意:如果使用第一个选项,则必须小心重新排序初始搜索中的列,因为这将影响结果中的索引。

票数 4
EN

Stack Overflow用户

发布于 2019-08-21 13:37:01

在处理公式字段时,我总是使用列索引值。下面是我的一个例子。这与我创建的第五列相匹配(当然从0开始)。希望这能有所帮助。

代码语言:javascript
复制
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;
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57549910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档