使用搜索中的公式从保存的搜索填充 Suitelet 子列表
Populate Suitelet Sublist from a Saved Search with Formulas in the Search
@bknights 对另一个关于在 suitelet 中填充子列表的问题发表了很好的回答。
然而,当使用 bk 的代码时,我的问题随之而来:
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);
以上适用于没有公式的标准搜索...当我有多个搜索列是公式时,我们如何才能做到这一点?
使用 API1.0
您可以只获取搜索结果的所有列。 columns = result[0].getColumns()
。引用公式列所在的列。因此,如果您查看 UI 并且它是从顶部数第三个,您可以使用 result[0].getValue(columns[2])
获取值
此解决方案取决于行的顺序不变。
此外,如果您保存的搜索有公式标签,您可以只使用标签作为字段 ID。
在您的搜索定义中,为所有公式列添加一个标签。然后你的列键可以像这样导出:
function getJoinedName(col) {
if(col.getName().indexOf('formula') === 0 && col.getLabel()){
return 'lbl_'+ col.getLabel().toLowerCase();
}
var join = col.getJoin();
return join ? col.getName() + '__' + join : col.getName();
}
@bknights 对另一个关于在 suitelet 中填充子列表的问题发表了很好的回答。
然而,当使用 bk 的代码时,我的问题随之而来:
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);
以上适用于没有公式的标准搜索...当我有多个搜索列是公式时,我们如何才能做到这一点?
使用 API1.0
您可以只获取搜索结果的所有列。 columns = result[0].getColumns()
。引用公式列所在的列。因此,如果您查看 UI 并且它是从顶部数第三个,您可以使用 result[0].getValue(columns[2])
此解决方案取决于行的顺序不变。
此外,如果您保存的搜索有公式标签,您可以只使用标签作为字段 ID。
在您的搜索定义中,为所有公式列添加一个标签。然后你的列键可以像这样导出:
function getJoinedName(col) {
if(col.getName().indexOf('formula') === 0 && col.getLabel()){
return 'lbl_'+ col.getLabel().toLowerCase();
}
var join = col.getJoin();
return join ? col.getName() + '__' + join : col.getName();
}