如何访问 Netsuite 中 Map Reduce 脚本的 Map 方法上的 getInputMethod 返回的数据(搜索,对象)
How to access the data's(search,objects) returned by the getInputMethod on Map Method of Map Reduce Script in Netsuite
在 My Map Reduce Script 的 getInputData() 中,我在 Invoice Record 上创建了搜索,在名为 contract 的自定义记录上创建了搜索并将结果存储在一个对象中,而且我还在名为 formula 的自定义记录上创建了另一个搜索并将结果存储在一个对象中,最后我返回发票搜索结果、合同对象、公式对象。
我现在知道在 Map 方法上使用上下文对象访问 getInputData 方法返回的所有数据。
我正在使用 JSON.PARSE(Context.Value) 在地图方法上获取发票搜索结果的数据;如何在Map方法中获取Contract对象和Formula对象的数据
代码:
var contractRecords = {};
var Formulas = {};
define(['N/error', 'N/record', 'N/search', 'N/log', 'N/task', 'N/runtime', 'N/email'],
function(error, record, search, log, task, runtime, email) {
function getInputData() {
try{
log.debug("Get Input", "Initiated");
//Invoice Search
var invoiceSearch = search.load({
id: 'customsearch_invoice_search'
});
log.debug("invoiceSearch:", invoiceSearch);
log.debug("GetInputData", "Completed");
//Storing values on Contract Object by Creating Search on Contract Record
contractRecords = loadContractRecords();
log.debug("contractRecords:",contractRecords);
//Storing values on Formula Object by Creating Search on Formula Record
Formulas = loadFormulas();
log.debug("Formulas:",Formulas);
return [invoiceSearch,contractRecords,Formulas];
}catch(exception){
log.debug("GetInputDate Error Message:",exception);
}
}
function map(context) {
try{
//Getting Search Results of Invoice
var searchResult = JSON.parse(context.value);
log.debug("searchResult:", searchResult);
var invoiceId = searchResult.id;
var item = searchResult.values.item.value;
var lineId = searchResult.values.line;
var lineUniqueKey = searchResult.values.lineuniquekey.value;
var invoice_amt = searchResult.values.amount;
}catch(exception){
log.debug("Map Error Message:",exception);
}
}
function reduce(context) {
log.debug("Reduce:", "Initiated");
}
function summarize(summary) {
log.debug("summarize", "Initiated");
log.debug("summarize", "Completed");
}
return {
getInputData: getInputData,
map: map,
reduce: reduce,
summarize: summarize
};
});
contractRecords、Formulas 对象是全局的,所以我已经为对象分配了返回对象的方法,然后我访问了 Map() 方法上的全局变量,但它在 GetInputData() 方法中返回了相同对象的空值有价值观。因此,我在 GetInputData() 方法的 Return 语句中返回了合同和公式对象以及发票搜索结果,但无法在 Map() 方法中获取合同和公式对象的值。
提前致谢
GetInputData() 方法的 return 应该是四种值类型之一 (Array | Object | search.Search | mapReduce.ObjectRef)。后两个 search.Search 和 mapReduce.ObjectRef 都有特殊处理。 运行 搜索的每个结果都将发送到 MAP 阶段。
从您的示例中,您正在 return创建一个数组(包含三个插槽);这将产生三个不同的 Map 阶段进程。三个 Map 阶段进程中的每一个都将仅包含来自 GetInputData() 的 return 的槽(invoiceSearch、contractRecords、Formulas)的数据。
您是否需要来自 contractRecords 和 Formulas 的数据以及 Map 阶段的 invoiceSearch 个别结果?
在 My Map Reduce Script 的 getInputData() 中,我在 Invoice Record 上创建了搜索,在名为 contract 的自定义记录上创建了搜索并将结果存储在一个对象中,而且我还在名为 formula 的自定义记录上创建了另一个搜索并将结果存储在一个对象中,最后我返回发票搜索结果、合同对象、公式对象。
我现在知道在 Map 方法上使用上下文对象访问 getInputData 方法返回的所有数据。
我正在使用 JSON.PARSE(Context.Value) 在地图方法上获取发票搜索结果的数据;如何在Map方法中获取Contract对象和Formula对象的数据
代码:
var contractRecords = {};
var Formulas = {};
define(['N/error', 'N/record', 'N/search', 'N/log', 'N/task', 'N/runtime', 'N/email'],
function(error, record, search, log, task, runtime, email) {
function getInputData() {
try{
log.debug("Get Input", "Initiated");
//Invoice Search
var invoiceSearch = search.load({
id: 'customsearch_invoice_search'
});
log.debug("invoiceSearch:", invoiceSearch);
log.debug("GetInputData", "Completed");
//Storing values on Contract Object by Creating Search on Contract Record
contractRecords = loadContractRecords();
log.debug("contractRecords:",contractRecords);
//Storing values on Formula Object by Creating Search on Formula Record
Formulas = loadFormulas();
log.debug("Formulas:",Formulas);
return [invoiceSearch,contractRecords,Formulas];
}catch(exception){
log.debug("GetInputDate Error Message:",exception);
}
}
function map(context) {
try{
//Getting Search Results of Invoice
var searchResult = JSON.parse(context.value);
log.debug("searchResult:", searchResult);
var invoiceId = searchResult.id;
var item = searchResult.values.item.value;
var lineId = searchResult.values.line;
var lineUniqueKey = searchResult.values.lineuniquekey.value;
var invoice_amt = searchResult.values.amount;
}catch(exception){
log.debug("Map Error Message:",exception);
}
}
function reduce(context) {
log.debug("Reduce:", "Initiated");
}
function summarize(summary) {
log.debug("summarize", "Initiated");
log.debug("summarize", "Completed");
}
return {
getInputData: getInputData,
map: map,
reduce: reduce,
summarize: summarize
};
});
contractRecords、Formulas 对象是全局的,所以我已经为对象分配了返回对象的方法,然后我访问了 Map() 方法上的全局变量,但它在 GetInputData() 方法中返回了相同对象的空值有价值观。因此,我在 GetInputData() 方法的 Return 语句中返回了合同和公式对象以及发票搜索结果,但无法在 Map() 方法中获取合同和公式对象的值。
提前致谢
GetInputData() 方法的 return 应该是四种值类型之一 (Array | Object | search.Search | mapReduce.ObjectRef)。后两个 search.Search 和 mapReduce.ObjectRef 都有特殊处理。 运行 搜索的每个结果都将发送到 MAP 阶段。
从您的示例中,您正在 return创建一个数组(包含三个插槽);这将产生三个不同的 Map 阶段进程。三个 Map 阶段进程中的每一个都将仅包含来自 GetInputData() 的 return 的槽(invoiceSearch、contractRecords、Formulas)的数据。
您是否需要来自 contractRecords 和 Formulas 的数据以及 Map 阶段的 invoiceSearch 个别结果?