2017-01-27 4 views
0

コンテキスト:SuiteScript v1で記述されたRESTletですが、必要な場合はv2を使用します。SuiteScriptを使用してロケーションレコードからアドレスのフィールドを取得する方法

重要:ソリューションはサーバー側で動作する必要があります。

ロケーションレコードには、Main Addressというフィールドがあります。フィールドIDはmainaddress_textです。

NetSuiteウェブサイトを使用してメインアドレスフィールドを編集すると、通常のアドレス編集フォームが標準のアドレスフィールドに表示されるので、NetSuiteはアドレスを保存するように見えます注意、宛先、電話などのフィールドに録音してください。

私はこれらのフィールドの値を取得したいのですが、どのように動かすことはできません。

Iは

location = nlapiLoadRecord('location', locationid) 

スキーマブラウザ(https://system.netsuite.com/help/helpcenter/en_US/srbrowser/Browser2016_1/schema/record/location.html)タイプアドレスのmainAddressと呼ばれるフィールドがあり示唆を使用して位置をロードしました。

私はこれらのようなステートメントを使用して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というフィールドがあります。

私はこれらのようなステートメントを使用して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で区切られたアドレスの部分で1つの文字列として返されます。

個々のアドレスフィールドを取得するにはどうすればよいですか?

答えて

2

私は、レコードを文字列化して内容を確認し、JSON.stringify(location)とすることをお勧めします。アドレスフィールドは通常、addr1などに格納されます。

UIからアドレスフィールドが設定されていない可能性があります。私はmainaddress_textフィールドを設定するスクリプトをいくつか見てきましたが、個々のフィールドを変更することを怠ると、mainaddress_textは他のアドレスフィールド(addr1、addr2など)と一致しません。

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

私は場所レコードを開く:

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') 
    }; 
} 
+0

JSON.stringifyが私に与える唯一のアドレスフィールドは、mainaddress_textとreturnaddress_textです。アドレスはUIから設定されています。 – cja

+0

奇妙な、UIから設定されたとき私の終わりにmainaddress_textと個々のaddr1、...フィールドの両方が取得されます。 –

+0

RESTletで作業していますか? – cja

1

は、この試してみて:

あなたはここでSS 1.0でそれを行う方法ですが、アドレスフィールドを検索しますかブラウザを開き、そこからnlobjRecordをロードするためのコンソールを開きました。私は、クライアント側のコンソールからviewSubrecord("mainaddress")に電話をかけることができませんでしたが、私は場所レコードをロードするために、単純なsuiteletを作成しなかったnlapiViewSubrecord("mainaddress")

によって設定されているmainaddress2_setフィールドがある参照フィールドを見てみると、住所を印刷します。

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

これは、r.viewSubrecord( "mainaddress") - \ "code \":\ "FIELD_1_IS_NOT_A_SUBRECORD_FIELD \"、\ "details \":\ "フィールドmainaddressはサブレコードフィールドではありません。同じ問題を抱えている誰かのために試してみる価値のあるDaveのために。 – cja

関連する問題