如何使用SuiteScript从位置记录中获取地址的字段

时间:2017-01-27 16:46:59

标签: netsuite suitescript

上下文:用SuiteScript v1编写的RESTlet,但如果必须,我将使用v2。

重要提示:解决方案必须在服务器端工作。

位置记录有一个标题为“主要地址”的字段。字段ID是mainaddress_text。

当我使用NetSuite网站编辑主地址字段时,它向我提供了具有普通地址字段的普通地址编辑表单,因此看起来NetSuite存储地址就像它在地址上所做的那样,例如客户记录,在名为Country,Attention,Addressee,Phone等的字段中。

我想获得这些字段的值,但我无法弄清楚如何。

我已使用

加载了该​​位置
location = nlapiLoadRecord('location', locationid)

架构浏览器(https://system.netsuite.com/help/helpcenter/en_US/srbrowser/Browser2016_1/schema/record/location.html)表明存在一个名为mainAddress的字段,类型为Address。

我试图使用以下语句访问mainAddress字段:

location.getField('mainaddress') //returns null
location.getSubList('mainaddress') //returns null
location.getLineItemCount('mainaddress') //returns -1
location.getFieldValue('mainaddress') //returns null
location.getFieldText('mainaddress') //returns null

但没有成功。

如果客户记录中有一个名为like的字段但返回-1,我也尝试了location.getLineItemCount('addressbook')

记录浏览器(https://system.netsuite.com/help/helpcenter/en_US/srbrowser/Browser2016_1/script/record/location.html)表明有一个名为addrtext的字段为Address。

我试图使用以下语句访问addrtext字段:

location.getField('addrtext') //returns null
location.getSubList('addrtext') //returns null
location.getLineItemCount('addrtext') //returns -1
location.getFieldValue('addrtext') //returns null
location.getFieldText('addrtext') //returns null

但没有成功。

记录浏览器还描述了名为addr1,addr2,addr3,addressee,attention,city等字段。

我试图使用以下语句访问这些​​字段:

location.getFieldValue('attention') //returns null
location.getFieldValue('addressee') //returns null
location.getFieldValue('addr1') //returns null
location.getFieldValue('addr2') //returns null
location.getFieldValue('addr3') //returns null
location.getFieldValue('city') //returns null
location.getFieldValue('state') //returns null
location.getFieldValue('country') //returns null

但没有成功。

我发现获取地址数据的唯一方法是使用location.getFieldValue('mainaddress_text'),但会将地址作为一个字符串返回,地址部分由<br> - 令牌分隔。

如何获取个人地址字段?

2 个答案:

答案 0 :(得分:3)

我建议使用JSON.stringify(location)对记录进行字符串化以查看其中的内容。地址字段通常存储在addr1等中......

可能没有从UI设置地址字段。我看过一些脚本只是设置了mainaddress_text字段,但忽略了改变单个字段,导致长期运行中的问题导致mainaddress_text与其他地址字段(addr1,addr2等等)不匹配。 / p>

您可能想尝试搜索地址字段,这里是如何在SS 1.0中执行此操作:

var locationSearch = nlapiSearchRecord("location", null,
    [
       ["internalid", "anyof", "2"] //Change internal id
    ], 
    [
        new nlobjSearchColumn("attention", 'address', null),
        new nlobjSearchColumn("addressee", 'address', null),
        new nlobjSearchColumn("address1", null, null),
        new nlobjSearchColumn("address2", null, null),
        new nlobjSearchColumn("address3", null, null),
        new nlobjSearchColumn("city", null, null),
        new nlobjSearchColumn("state", null, null),
        new nlobjSearchColumn("country", null, null),
        new nlobjSearchColumn("zip", null, null),
        new nlobjSearchColumn("phone", null, null)
    ]
);

if (results)
{
    var result = results[0];

    return {
        attention: result.getValue('attention', 'address'),
        addressee: result.getValue('addressee', 'address'),
        address1: result.getValue('address1'),
        address2: result.getValue('address2'),
        address3: result.getValue('address3'),
        city: result.getValue('city'),
        state: result.getValue('state'),
        country: result.getValue('country'),
        zip: result.getValue('zip'),
        phone: result.getValue('phone')
    };
}

答案 1 :(得分:2)

尝试一下:

mainaddress2_set

我在浏览器中打开了一个位置记录,并从那里打开一个控制台来加载nlobjRecord。查看字段,我看到有一个nlapiViewSubrecord("mainaddress")字段,由viewSubrecord("mainaddress")

设置

我无法从客户端控制台调用function GET(request, response){ var r = nlapiLoadRecord("location", "123456", {recordmode: "dynamic"}); response.write(r.viewSubrecord("mainaddress").getFieldValue('addrtext')); response.write(r.viewSubrecord("mainaddress").getFieldValue('addr1')); // etc. } ,但我创建了一个简单的suitelet来加载Location记录并打印地址。

JSONObject sysJson = jsonObject.getJSONObject("sys");
String strSunrise = sysJson.getString("sunrise");