无法在响应对象中获取信息
Can't get an information inside an response object
我正在加载保存的搜索并尝试从结果中获取一些特定信息。
我尝试了很多方法来获取和处理结果,其中一些有效,但不是自动的。
手动工作:
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
});
我希望获得这些特定信息:实体的 "value" 和 "custbody1"。当我使用自动搜索时,它 returns 未定义,或者错误提示“无法从未定义中获取信息”。
这只适用于 Netsuite 调试器...
感谢任何帮助!
问题在于您如何尝试从结果中获取值。当您传递自己的测试数据时,您使用的对象的结构完全与您编写它的方式相同。但是,当您从搜索(创建或加载)中获得结果时,返回的对象实际上并不是您在将其记录到控制台时所看到的那样构造的。这就是为什么您的测试有效但搜索方法无效的原因。
如帮助中心所述,您必须使用 Result.getValue(fieldId)
或 Result.getText(fieldId)
才能获得value/text 来自结果字段。您不能像访问任何其他对象(点或括号表示法)那样直接访问值。
要获得所需的值,请改为执行以下操作:
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
}
我正在加载保存的搜索并尝试从结果中获取一些特定信息。
我尝试了很多方法来获取和处理结果,其中一些有效,但不是自动的。
手动工作:
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
});
我希望获得这些特定信息:实体的 "value" 和 "custbody1"。当我使用自动搜索时,它 returns 未定义,或者错误提示“无法从未定义中获取信息”。 这只适用于 Netsuite 调试器...
感谢任何帮助!
问题在于您如何尝试从结果中获取值。当您传递自己的测试数据时,您使用的对象的结构完全与您编写它的方式相同。但是,当您从搜索(创建或加载)中获得结果时,返回的对象实际上并不是您在将其记录到控制台时所看到的那样构造的。这就是为什么您的测试有效但搜索方法无效的原因。
如帮助中心所述,您必须使用 Result.getValue(fieldId)
或 Result.getText(fieldId)
才能获得value/text 来自结果字段。您不能像访问任何其他对象(点或括号表示法)那样直接访问值。
要获得所需的值,请改为执行以下操作:
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
}