2017-02-23 15 views
3

Утренние гуру,Получить сохраненные значения поиска для нескольких столбцов «формулы»

У меня есть сохраненный поиск в Netsuite с несколькими столбцами «формулы».

Например, существует несколько знаков formulapercent' named columns, although the для каждого уникального.

Однако при использовании nlobjSearchResult.getValue('formulapercent'), естественно, я получаю только первое значение столбца formulapercent.

Как указать в getValue, который столбцов формулы Я хочу вернуть значение для?

Я действительно не хочу использовать номер столбца, если мне нужно вставить новый столбец в сохраненный поиск в Netsuite позже.

Надеяться на что-то вдоль линий nlobjSearchResult.getValue('formulapercent','<label>')

Я попробовал вариант нескольких параметров, но она не работает.

Простые исправления?

Приветствия

Стив

ответ

3

Что я обычно делаю, это добавить ярлык в сохраненные столбцы формулы поиска. Затем:

var f1Val, f2Val, etc; 
results.forEach(function(res){ 
    var cols = res.getAllColumns(); 
    cols.forEach(function(col){ 
    switch(col.getLabel()){ 
     case 'formula1' : f1Val = res.getValue(col); break; 
     case 'formula2' : f2Val = res.getValue(col); break; 
     ... 
    } 
    }); 
}); 
+0

Спасибо за ответ. Как насчет фактического возврата стоимости? Я пробовал getValue с меткой (все столбцы имеют метку), но я получаю 'null' –

+0

См. Редактирование. Вы можете использовать сам столбец как ключ – bknights

+0

Спасибо BK, я попробую это сегодня утром :) –

1

Существует метод в объекте nlobjSearchResult называемых getAllColumns(). Затем я использую индекс столбцов формулы для получения значения.

Я не знаю другого способа получить значения столбцов формулы. Обратите внимание: если вы используете этот метод, если вы измените порядок столбцов в сохраненном поиске, он нарушит ваш скрипт.

1

Это работает для меня с использованием SuiteScript 2.0. Поместите это в функцию и передайте необходимые переменные.

if(join){ 
    if(summary){ 
     if(String(name).startsWith("formula")){ 
      return result.getValue(result.columns[column]) 
     }else{ 
      var searchResult = result.getValue({ 
           name: name, 
           join: join, 
           summary:summary 
          }); 
      return searchResult 
     } 

    }else{ 
     if(String(name).startsWith("formula")){ 
      return result.getValue(result.columns[column]) 
     }else{ 
      var searchResult = result.getValue({ 
           name: name, 
           join: join 
          }); 
      return searchResult 
     } 
    } 

}else{ 
    if(summary){ 
     if(String(name).startsWith("formula")){ 
      return result.getValue(result.columns[column]) 
     }else{ 
      var searchResult = result.getValue({ 
           name: name, 
           summary: summary, 
          }); 
      if((column==7 || column ==8 || column==10 || column==12) && type=='cases'){ 

       return dropDown_Obj[column].getKeyByValue(searchResult) 
      } 
      return searchResult 
     } 

    }else{ 
     if(String(name).startsWith("formula")){ 
      return result.getValue(result.columns[column]) 
     }else{ 
      var searchResult = result.getValue({ 
           name: name 
          }); 
      return searchResult 
     } 
    } 
} 
0

Думал, что добавлю ответ, который с тех пор узнал.

Вместо обычной нумерации столбцов. Например:

var column = [] 
column[0] = new nlobjSearchColumn('formulanumeric').setFormula('myformula1'); 
column[1] = new nlobjSearchColumn('formulanumeric').setFormula('myformula2'); 
searchresults = nlapiSearchRecord(.......); 

Вместо этого, я нашел самый простой способ для получения значений столбцов формулы однозначно определить столбцы:

var colformula1 = new nlobjSearchColumn('formulanumeric').setFormula('myformula1'); 
var colformula2 = new nlobjSearchColumn('formulanumeric').setFormula('myformula2'); 

var searchresults = nlapiSearchRecord('item',null,filters,[colformula1,colformula2]); 

Чтобы затем захватить результаты формулы:

var formulares1 = searchresults[i].getValue(colformula1'); 
var formulares2 = searchresults[i].getValue(colformula2'); 

Удаляет проблему, если изменения столбцов меняются.

Думал, это может помочь кому-то.