Netsuite 将搜索保存到 Suitelet 子列表
Netsuite Saved Search to Suitelet Sublist
我正在尝试使用我已经创建的自定义保存搜索中的数据填充套件中的子列表。我的问题是子列表仅从与我正在执行的已保存搜索的 "type" 相对应的字段中填充数据。例如,在本例中,保存的搜索是 "transaction" 类型的搜索。例如,如果我想在保存的搜索中引用客户字段,比如 "Name" 和 "Billing Address",则此数据将不会填充 suitelet 中的子列表。交易记录本身引用的所有其他字段都很好地填充了子列表。我只是想知道是否有人 运行 遇到过同样的问题,无论如何这是我正在尝试实现的代码。
var form,
sublist;
//GET
if (request.getMethod() == 'GET')
{
//create form
form = nlapiCreateForm('Test Custom Suitelet Form', false);
//create sublist to show results
sublist = form.addSubList('custpage_sublist_id', 'list', 'Item List');
//form buttons
form.addSubmitButton('Submit');
form.addResetButton('Reset');
// run existing saved search
var searchResults = nlapiSearchRecord('transaction','customsearchID');
var columns = searchResults[0].getAllColumns();
// Add the search column names to the sublist field
for ( var i=0; i< columns.length; i++ )
{
sublist.addField(columns[i].getName() ,'text', columns[i].getLabel() );
nlapiLogExecution('DEBUG', 'Column Label',columns[i].getLabel());
}
//additional sublist fields
sublist.addMarkAllButtons();
sublist.addField('custfield_selected', 'checkbox', 'Selected');
sublist.setLineItemValues(searchResults)
response.writePage(form);
}
如果您查看 nlobjSublist 文档,您会发现 sublist.setLineItemValues 也可以采用哈希数组。起作用的是:
function getJoinedName(col) {
var join = col.getJoin();
return join ? col.getName() + '__' + join : col.getName();
}
searchResults[0].getAllColumns().forEach(function(col) {
sublist.addField(getJoinedName(col), 'text', col.getLabel());
nlapiLogExecution('DEBUG', 'Column Label', col.getLabel());
});
var resolvedJoins = searchResults.map(function(sr) {
var ret = {
id: sr.getId()
};
sr.getAllColumns().forEach(function(col) {
ret[getJoinedName(col)] = sr.getText(col) || sr.getValue(col);
});
return ret;
});
sublist.setLineItemValues(resolvedJoins);
我正在尝试使用我已经创建的自定义保存搜索中的数据填充套件中的子列表。我的问题是子列表仅从与我正在执行的已保存搜索的 "type" 相对应的字段中填充数据。例如,在本例中,保存的搜索是 "transaction" 类型的搜索。例如,如果我想在保存的搜索中引用客户字段,比如 "Name" 和 "Billing Address",则此数据将不会填充 suitelet 中的子列表。交易记录本身引用的所有其他字段都很好地填充了子列表。我只是想知道是否有人 运行 遇到过同样的问题,无论如何这是我正在尝试实现的代码。
var form,
sublist;
//GET
if (request.getMethod() == 'GET')
{
//create form
form = nlapiCreateForm('Test Custom Suitelet Form', false);
//create sublist to show results
sublist = form.addSubList('custpage_sublist_id', 'list', 'Item List');
//form buttons
form.addSubmitButton('Submit');
form.addResetButton('Reset');
// run existing saved search
var searchResults = nlapiSearchRecord('transaction','customsearchID');
var columns = searchResults[0].getAllColumns();
// Add the search column names to the sublist field
for ( var i=0; i< columns.length; i++ )
{
sublist.addField(columns[i].getName() ,'text', columns[i].getLabel() );
nlapiLogExecution('DEBUG', 'Column Label',columns[i].getLabel());
}
//additional sublist fields
sublist.addMarkAllButtons();
sublist.addField('custfield_selected', 'checkbox', 'Selected');
sublist.setLineItemValues(searchResults)
response.writePage(form);
}
如果您查看 nlobjSublist 文档,您会发现 sublist.setLineItemValues 也可以采用哈希数组。起作用的是:
function getJoinedName(col) {
var join = col.getJoin();
return join ? col.getName() + '__' + join : col.getName();
}
searchResults[0].getAllColumns().forEach(function(col) {
sublist.addField(getJoinedName(col), 'text', col.getLabel());
nlapiLogExecution('DEBUG', 'Column Label', col.getLabel());
});
var resolvedJoins = searchResults.map(function(sr) {
var ret = {
id: sr.getId()
};
sr.getAllColumns().forEach(function(col) {
ret[getJoinedName(col)] = sr.getText(col) || sr.getValue(col);
});
return ret;
});
sublist.setLineItemValues(resolvedJoins);