seach api中的列值

时间:2017-03-10 18:03:31

标签: netsuite suitescript

我想从销售订单记录的物料子列表中获取值。

但无法得到它。虽然我可以得到SO记录的实体字段的值。

以下是代码片段:

        var filters = new Array();
                        filters[0] = new nlobjSearchFilter("mainline",null,"is","T");

                        var column=new Array();
                        column[0] = new nlobjSearchColumn("trandate");
                        column[1] = new nlobjSearchColumn("item");
                        column[2] = new nlobjSearchColumn("cust_col_1");

                var result = nlapiSearchRecord('salesorder', null, filters, column);

    for(var i = 0; i<result.length; i++)
            {
                var col = result[i].getAllColumns();
                var date = result[i].getFieldValue("trandate"); //I get this
                var item_id =  result[i].getLineItemValue("item", "item", i+1); // I don't get this
                var cust_col = result[i].getLineItemValue("item", "cust_col_1", i+1); //I don't get this
            }

我认为我定义了错误的列。

2 个答案:

答案 0 :(得分:3)

通过指定过滤器new nlobjSearchFilter("mainline",null,"is","T"),您基本上可以告诉搜索您不想要任何订单项数据。这意味着您将无法读取任何列数据,自定义或其他。

mainline过滤器参数基本上有三个选项,'F'表示您需要订单项详细信息。 'T'表示您只需要标题数据。保留此过滤器将为标题信息返回一行,为事务上的每个行项返回一行。

答案 1 :(得分:3)

这部分

var item_id = result[i].getLineItemValue("item", "item", i+1); // I don't get this var cust_col = result[i].getLineItemValue("item", "cust_col_1", i+1); //I don't get this

也是错误的,如果您已加载记录,则使用此语法,但对于搜索结果,您只需使用

result[i].getValue('cust_col_1")