无法在响应对象中获取信息

时间:2019-05-21 12:49:36

标签: javascript arrays object search suitescript2.0

我正在加载保存的搜索,并尝试从结果中获取一些特定信息。

我尝试了多种方法来获取和处理结果,其中一些方法可以工作,但不能自动完成。

手动工作:

var resultado = [{"recordType":"vendorbill","id":"13315","values": 
    {"entity":[{"value":"5253","text":"PREVENCAO TOTAL SEGURANCA DO TRABALHO E 
    CURSOS LTDA ME"}],"custbody1":"123456"}}, 
    {"recordType":"vendorbill","id":"13316","values":{"entity": 
    [{"value":"5253","text":"PREVENCAO TOTAL SEGURANCA DO TRABALHO E CURSOS 
    LTDA ME"}],"custbody1":"123456"}}, 
    {"recordType":"vendorbill","id":"13424","values":{"entity": 
    [{"value":"6280","text":"A. A. POSTO DE SERVICOS 
    LTDA"}],"custbody1":"12345678"}}];
    log.debug(resultado);
for (var a in resultado){
    var dados = resultado[a];
    var dados1 = dados['values'];
    var dados2 = dados1['entity'];
    var nota = dados1['custbody1'];
    log.debug("Numero da nota: " + nota);
    var dados3 = dados2[0];
    var vendorId = dados3['value'];
    log.debug("Id do Fornecedor: " + vendorId);
}

我需要使用自动结果,像这样:

var resultado = busca.run().getRange({
    start: 0,
    end: 999
});

我希望获得这些特定的信息:实体的“值”和“ custbody1”。当我执行自动搜索时,它会返回未定义,或者返回错误消息“无法从未定义获取信息”。 这仅适用于Netsuite调试器...

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

问题在于您如何尝试从结果中获取值。当您传递自己的测试数据时,您使用的是精确结构化的对象。但是,当您从搜索(创建或加载)中获得结果时,返回的对象实际上并不是将其记录到控制台时所看到的结构。这就是为什么您的测试有效但搜索方法无效的原因。

如帮助中心中所述,您必须使用 Result.getValue(fieldId) Result.getText(fieldId) 从结果字段中获取值/文本。您无法像使用其他任何对象(点或括号符号)那样直接访问值。

要获取所需的值,请执行以下操作:

var resultado = busca.run().getRange(0, 1000);

for (var a in resultado) {
  var dados = resultado[a];

  var entityValue = dados.getValue('entity'); // 5253
  var entityText = dados.getText('entity'); // PREVENCAO TOTAL SEGURANCA DO TRABALHO E CURSOS LTDA ME
  var custbody1Value = dados.getValue('custbody1'); // 123456
}