首页 文章

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

提问于
浏览
0

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

Important: Solution must work serverside.

位置记录有一个 Headers 为主地址的字段 . 字段id是mainaddress_text .

当我使用NetSuite网站编辑主要地址字段时,它向我提供了具有普通地址字段的普通地址编辑表单,因此看起来NetSuite存储地址就像它在地址上一样,例如客户记录,在字段中称国家,注意,收件人,电话等

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

我已经使用了加载位置

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> -tokens分隔 .

如何获取各个地址字段?

2 回答

  • 2

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

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

    您可能想尝试搜索地址字段,这里是如何在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

    尝试一下:

    nlapiLoadRecord("location", locationID, {recordmode: "dynamic"})
    .viewSubrecord("mainaddress")
    .getFieldValue('addrtext');
    

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

    我无法从客户端控制台调用 viewSubrecord("mainaddress") ,但我确实创建了一个简单的suitelet来加载Location记录并打印地址 .

    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.
    }
    

相关问题