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