RE: How to modify a SuiteLet sublist via linked Client Script?

Hi there, I have a SuiteLet with an empty sublist. A button on the SuiteLet directs to a Client Script which is attempting to populate the sublist. I’m encountering a strange error on my Client Script—”undefined is not an object (evaluating ‘olddata[i]’).” This is a JavaScript error, I believe referring to “rec” in the following code. The error initiates on “rec.commitLine.”
function populateSublist(fieldValues, rec, availableItems) {
        log.debug("Rec", rec);
        if (availableItems[0]) {
            for (i = 0; i < availableItems.length; i++) {
                try {
                    rec.selectNewLine({
                        sublistId: 'custpage_items_sublist'
                    });

                    rec.setCurrentSublistValue({
                        sublistId: 'custpage_items_sublist',
                        fieldId: 'custpage_parent_frame',
                        value: availableItems[0].item_parent_frame
                    });

                    // More values being set...

                    rec.commitLine({ // <=== *** RIGHT HERE ***
                        sublistId: 'custpage_items_sublist'
                    });
                } catch (e) {
                    log.error("Unable to commit line - " + e.name, e.message);
                }
            }
        } else {
            log.debug("No available items for given parameters.")
        }

 

Here are some things I know:

  1. “rec” is working previously and getting field names I need.
  2. “rec” is showing “{“id”:””,”type”:null,”isDynamic”:true}” in my execution log.
  3. The beginning of my Client Script uses “var rec = currentRecord.get();” to receive the record.

Is it possible to modify a SuiteLet sublist from a Client Script? I’ve never done this in particular before, so I’m at a loss here. Any help or ideas are immensely appreciated! Thanks!

Ben_sr Rookie Asked on December 18, 2020 in SuiteScript.
Add Comment
3 Answers

Yes it is possible.  Firstly what is the entry point calling your script?  rec should context.currentRecord, not currentRecord.get().  Nothing really looks wrong with select/set/commit in the loop, so it is probably a data problem or a problem with how you are defining rec.

As a reference, this simple client script works fine with adding a line to sublist.

 
exports.fieldChanged = function fieldChanged(context) {
  if (context.fieldId == 'custpage_fieldone') {
    var rec = context.currentRecord;
    rec.selectNewLine({
      sublistId: 'custpage_testsub'
    });
    rec.setCurrentSublistValue({
      sublistId: 'custpage_testsub',
      fieldId: 'custpage_columnone',
      value: rec.getValue('custpage_fieldone')
    });
    rec.commitLine({
      sublistId: 'custpage_testsub'
    });
  }
}
return exports;
Intermediate Answered on December 18, 2020.

Yes, the client script has a pageInit() that is not being used except for a debug. My function, “onLookupItemsButtonClick()” is being called by the SuiteLet button. I realize I might be able to use a lib. script for all this, but that may be something I change down the road.

If I do use “context.currentRecord”, this Client Script won’t run at all when the SuiteLet button is clicked—likely indicating an error.

RE: How to modify a SuiteLet sublist via linked Client Script?

Thanks for your reply and help! Let me know if you have any other thoughts on this.

on December 18, 2020.
Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.