Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search Netsuite获取公式的显示文本_Search_Text_Filter_Formula_Netsuite - Fatal编程技术网

Search Netsuite获取公式的显示文本

Search Netsuite获取公式的显示文本,search,text,filter,formula,netsuite,Search,Text,Filter,Formula,Netsuite,我需要得到一个字段的文本显示值,以比较过帐期间的日期范围。我有下面的公式,我正在推到一个过滤器阵列,还有其他需要运行的过滤器 var columns = []; columns.push(new nlobjSearchColumn('transactionnumber')); columns.push(new nlobjSearchColumn('line')); columns.push(new nlobjSearchColumn('item')); columns.push(new n

我需要得到一个字段的文本显示值,以比较过帐期间的日期范围。我有下面的公式,我正在推到一个过滤器阵列,还有其他需要运行的过滤器

var columns = [];
columns.push(new nlobjSearchColumn('transactionnumber'));   
columns.push(new nlobjSearchColumn('line'));
columns.push(new nlobjSearchColumn('item'));
columns.push(new nlobjSearchColumn('account'));
columns.push(new nlobjSearchColumn('amount'));
columns.push(new nlobjSearchColumn('vsoeallocation'));
columns.push(new nlobjSearchColumn('postingperiod'));       
columns.push(new nlobjSearchColumn('srctranpostperiod','revrecschedule'));
columns.push(new nlobjSearchColumn('recuramount','revrecschedule'));
columns.push(new nlobjSearchColumn('jedoc', 'revrecschedule'));

columns[0].setSort();
columns[1].setSort();   

var filter = [];        

var formula = "case when TO_DATE({postingperiod.displayname}, 'MON YYYY') >= " + newselectedDate.getFullYear() + " then 1 else 0 end";

filter.push(new nlobjSearchFilter('revrecenddate', null, 'after', newselectedDate));
filter.push(new nlobjSearchFilter('type', null, 'anyof', ['CustInvc', 'CashSale']));    
filter.push(new nlobjSearchFilter('templatename','revrecschedule','isnotempty'));
filter.push(new nlobjSearchFilter('deferredamount','revrecschedule','isnot', 0));
filter.push(new nlobjSearchFilter('formulanumeric', null, 'equalto', 1).setFormula(formula));   

var search = nlapiCreateSearch('transaction', filter, columns);

var searchresult = search.runSearch();
从理论上讲,这是可行的,但它得到的是字段的值,而不是文本的值,结果是非日期值。我知道在运行搜索后,有很多方法可以获取文本,而不是nlobjsearchsult.getText的值,但我还没有找到在公式中实现这一点的方法


有什么想法吗?

似乎发帖期实际上可能包含额外的信息,这些信息显然只在“日期”之类的功能中使用。这可能是因为会计期间的内部层次结构。也可能是因为期间是单个选择框中的列表/记录字段,所以每个过账期间都有一个ID。为了解决这个问题,我对您的代码执行了以下操作:

var formula = "case when TO_DATE(SUBSTR({postingperiod},-8,8), 'MON YYYY') >= " + newselectedDate.getFullYear() + " then 1 else 0 end";

这基本上是添加一个SUBSTR函数来提取字符串中的最后8个字符,并传递给date函数。

也许您可以给出搜索的用例?您似乎正在尝试在过帐期间内搜索交易记录。是。基本上,我需要筛选出一定的过帐期间日期内的交易。我必须转换过帐期间,因为它没有存储为日期数据类型。如果事务中的行项目的过帐期间不在日期范围内,我指定要将其过滤掉。您需要创建一个函数,将{postingperiod}转换为实际日期。假设P01 15,您需要将其转换为2015年1月1日,并将其与您的公式连接起来,就像所选日期一样。{postingperiod}字段不能转换为日期。它将是:var公式=case when_DATE+convertpostingPeriod+>=+selectedDate+然后1否则0结束;函数转换postingperiod{//做你的事}我想你不太明白我想做什么。我已经发布了代码块供您查看。你的答案将工作,如果我知道一个具体的张贴期间,然后是的,我可以转换,使它的工作。我需要我的公式来查看搜索中的每个交易过账期,并根据该过账期确定设置过账期格式后的日期。我在网上看到的文档表明,将字段名放在公式中的括号中,可以从我正在搜索的数据中获取该字段的值。