Netsuite 如何使用SuiteScript 2.0设置客户地址

Netsuite 如何使用SuiteScript 2.0设置客户地址,netsuite,Netsuite,我正试图在客户记录上设置一个地址。我知道地址是客户子列表的一个子记录,我相信我能够在该子记录上设置字段,但我无法保存更改。如何使用SuiteScript2.0设置客户的地址信息 当前代码: customer.selectNewLine({ sublistId: 'addressbook' }); var addressSubrecord = customer.getCurrentSublistSubrecord({ sublistId: 'addressbook', fieldId

我正试图在客户记录上设置一个地址。我知道地址是客户子列表的一个子记录,我相信我能够在该子记录上设置字段,但我无法保存更改。如何使用SuiteScript2.0设置客户的地址信息

当前代码:

customer.selectNewLine({
  sublistId: 'addressbook'
});

var addressSubrecord = customer.getCurrentSublistSubrecord({
  sublistId: 'addressbook',
  fieldId: 'addressbookaddress'
});

subrecordAddressDetail.setValue({
  fieldId: 'addr1',
  value: 'Test Street'
});

subrecordAddressDetail.setValue({
    fieldId: 'country',
    value: 'US'
});

customer.commitLine({
  sublistId: 'addressbook'
});

我还尝试在
.commitList
之后添加
customer.save()
,但当我尝试添加时,发现错误
记录已更改。

我认为您需要将地址视为正确的记录。因此,在检索它之后,设置它的值,然后分别提交它。大致如下:

customer.selectNewLine({
    sublistId: 'addressbook'
});

var addressSubrecord = customer.getCurrentSublistSubrecord({
    sublistId: 'addressbook',
    fieldId: 'addressbookaddress'
});

addressSubrecord.setValue({
    fieldId: 'addr1',
    value: 'Test Street'
});

addressSubrecord.setValue({
    fieldId: 'country',
    value: 'US'
});

addressSubrecord.save()

customer.commitLine({ //probably not necessary since address is already updated
    sublistId: 'addressbook' 
});

我缺少的部分是,您需要保存父记录,以便对子列表的子记录所做的任何更改生效。我无法保存所述父记录,因为我已对该记录进行了更改,并在以前保存了这些更改,从而导致
记录已更改错误

通常,可以通过以下方式将地址添加到客户记录中:

  • 地址簿
    子列表中选择一行
  • 正在检索当前选定行的地址子记录
  • 正在更新子记录
  • 地址簿
    子列表中提交所选行
  • 保存父记录
  • 例如,这将更新给定客户的第一个地址,如果该地址不存在,则创建该地址:

    function updateAddress(customer, address) {
        var currentAddressCount = customer.getLineCount({
          'sublistId': 'addressbook'
        });
    
        if (currentAddressCount === 0){
          customer.selectNewLine({
             sublistId: 'addressbook'
           });
        } else {
          customer.selectLine({
            sublistId: 'addressbook',
            line: 0
          });     
        } 
    
        var addressSubrecord = customer.getCurrentSublistSubrecord({
          sublistId: 'addressbook',
          fieldId: 'addressbookaddress'
        });
    
        // Set all required values here.
        addressSubrecord.setValue({
            fieldId: 'addr1',
            value: address.line_one
        })
    
        customer.commitLine({
           sublistId: 'addressbook'
        });
        customer.save()
      }
    

    嗨@TonyH-谢谢你的帮助。在SuiteScript2.0中,子记录似乎没有
    .save()
    方法。调用save返回未定义方法的错误。我能够解决我的问题-我发布了一个概括问题的答案。其中一个恼人的障碍是:由于这些子列表API仅在动态模式下可用,如果要更改它,必须确保首先设置国家字段。如果在动态模式下设置其他字段后更改国家/地区字段,则将丢失所有更改。最好在UI中进行试运行,以确保您知道字段的设置顺序。