NetSuite SuiteScript 2.0 use DeferredDynamicRecord-CarlZeng

Background There is a case when we add dynamic sublists to NetSuite Transaction, for user to put in data. In server-side, how to read it in SuiteScrip

Background

There is a case when we add dynamic sublists to NetSuite Transaction, for user to put in data.

In server-side, how to read it in SuiteScript 2.0, NetSuite version 2017.1.0.70

I found we can’t use scriptContext.newRecord.getSublistValue to read data in custom sublist.

and we can’t use scriptContext.newRecord.sublists.custpage_receipts to read detail objects. 

How to resolve this?

Solution

In beforeSubmit we have native NetSuite parameter scriptContext,

when we saw scriptContext.newRecord it’s a type of DeferredDynamicRecord.

I thought we can read the object details inside, I.e. scriptContext.newRecord.sublists.custpage_receipts

But actually since scriptContext.newRecord is a type of DeferredDynamicRecord, we can’t read the data inside.

Try this:

var currentRecord = scriptContext.newRecord; var objCurRec = JSON.parse(JSON.stringify(currentRecord)); var objSublists = objCurRec.sublists ? objCurRec.sublists : ‘’; var objCustReceipts = objSublists.custpage_receipts ? objSublists.custpage_receipts : ‘’;

Steps:

  1. JSON.stringify scriptContext.newRecord. (It became string)
  2. JSON.parse the strigified string. (Now it becomes native object)
  3. Now we can read data inside I.e. objCurRec.sublists.custpage_receipts