我正在尝试在客户记录上设置地址。我已经了解到地址是客户子列表的子记录,我相信我可以在所述子记录上设置字段,但我无法保存更改。如何使用 SuiteScript 2.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'
});
Run Code Online (Sandbox Code Playgroud)
我也尝试添加customer.save()after .commitList,但是Record has changed当我尝试这样做时出现错误。
我缺少的部分是您需要保存父记录以使对子列表的子记录的任何更改生效。我无法保存所述父记录,因为我对该记录进行了更改并之前保存了它们,这导致Record has already changed error.
通常可以通过以下方式将地址添加到客户记录中:
addressbook子列表中选择一行。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()
}
Run Code Online (Sandbox Code Playgroud)
我认为您需要将该地址视为正确的记录。因此,在检索它之后,设置其值,然后单独提交。沿着这些思路:
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'
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5713 次 |
| 最近记录: |