Заполнить подсписок Suitelet из сохраненного поиска с помощью формул в поиске - PullRequest
0 голосов
/ 03 октября 2018

@ bknights опубликовал хороший ответ на другой вопрос, касающийся заполнения подсписка в пакете.

Однако мой вопрос вытекает из этого при использовании кода 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

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

В определении поиска добавьте метку ко всем столбцам формулы.Тогда ваши ключи столбцов могут быть получены как:

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();
}
0 голосов
/ 03 октября 2018

Вы можете просто получить все столбцы результата поиска.columns = result[0].getColumns().Ссылка на столбец, где находится столбец формулы.Так что, если вы посмотрите в пользовательском интерфейсе, и он является третьим сверху, вы можете получить значение, используя result[0].getValue(columns[2])

. Это решение зависит от порядка неизменности строк.

Такжеесли в вашем сохраненном поиске есть метки для формул, вы можете просто использовать метки в качестве идентификатора поля.

...