NetSuite - 自定义字段 - 已分配给地址簿但无法使用 JS 访问
NetSuite - Custom Fields - Assigned to Addressbook but cant access using JS
我目前正在销售订单上编写脚本以拉取附加到所选送货地址的自定义字段。我可以提取所有地址字段(城市、邮编等),但我无法弄清楚如何访问地址的任何附加自定义字段。
示例脚本:
var custid = document.getElementById("hddn_entity_fs").value;
var shiptoid = document.getElementById("hddn_shipaddresslist2").value;
var customer = nlapiLoadRecord("customer", custid);
var itemCount = customer.getLineItemCount('addressbook');
for (var i = 1; i < itemCount; i++) {
if (customer.getLineItemValue('addressbook', 'id', i) == shiptoid) {
//this works
var zip = customer.getLineItemValue('addressbook', 'zip', i);
console.log('zip:' + zip);
//this does not work
var custrecord19 = customer.getLineItemValue('addressbook', 'custrecord19', i);
console.log('custrecord19:' + custrecord19);
}
}
我确信我遗漏了一些简单的东西。非常感谢任何帮助!
邮编
地址上的自定义字段实际上在地址记录上
类似:
SS1.0动态模式。显然只有服务器端。
var customer = nlapiLoadRecord('customer', custid, {recordmode:'dynamic'});
...
customer.selectLineItem('addressbook', i);
var addr = customer.editCurrentLineItemSubrecord('addressbook', 'addressbookaddress');
console.log(addr.getFieldValue('custrecord19'));
或者 SS1 服务器端不是动态的
var addr = custRec.viewLineItemSubrecord('addressbook', 'addressbookaddress', i);
console.log(addr.getFieldValue('custrecord19'));
SS2.0 适用于客户端或服务器端
var addr = custRec.getSublistSubrecord({sublistId:'addressbook', fieldId:'addressbookaddress', line:i});
console.log(addr.getValue({fieldId:'custrecord19'}));
一个帐户混合使用 SS1 和 SS2 脚本是完全可行的。
为了让它正常工作,我建议将您当前的客户端脚本更改为 SS2。
下面是客户端脚本框架:
/**
* @NApiVersion 2.x
* @NScriptType ClientScript
*/
define(['N/currentRecord', 'N/ui/message', 'N/url', 'N/https', 'N/search'],
function(rec, msg, url, http, search) {
return {
fieldChanged : function(){ console.log('fired field changed');},
postSourcing: function(){ console.log('fired sourcing');}
};
});
我目前正在销售订单上编写脚本以拉取附加到所选送货地址的自定义字段。我可以提取所有地址字段(城市、邮编等),但我无法弄清楚如何访问地址的任何附加自定义字段。
示例脚本:
var custid = document.getElementById("hddn_entity_fs").value;
var shiptoid = document.getElementById("hddn_shipaddresslist2").value;
var customer = nlapiLoadRecord("customer", custid);
var itemCount = customer.getLineItemCount('addressbook');
for (var i = 1; i < itemCount; i++) {
if (customer.getLineItemValue('addressbook', 'id', i) == shiptoid) {
//this works
var zip = customer.getLineItemValue('addressbook', 'zip', i);
console.log('zip:' + zip);
//this does not work
var custrecord19 = customer.getLineItemValue('addressbook', 'custrecord19', i);
console.log('custrecord19:' + custrecord19);
}
}
我确信我遗漏了一些简单的东西。非常感谢任何帮助!
邮编
地址上的自定义字段实际上在地址记录上
类似:
SS1.0动态模式。显然只有服务器端。
var customer = nlapiLoadRecord('customer', custid, {recordmode:'dynamic'});
...
customer.selectLineItem('addressbook', i);
var addr = customer.editCurrentLineItemSubrecord('addressbook', 'addressbookaddress');
console.log(addr.getFieldValue('custrecord19'));
或者 SS1 服务器端不是动态的
var addr = custRec.viewLineItemSubrecord('addressbook', 'addressbookaddress', i);
console.log(addr.getFieldValue('custrecord19'));
SS2.0 适用于客户端或服务器端
var addr = custRec.getSublistSubrecord({sublistId:'addressbook', fieldId:'addressbookaddress', line:i});
console.log(addr.getValue({fieldId:'custrecord19'}));
一个帐户混合使用 SS1 和 SS2 脚本是完全可行的。
为了让它正常工作,我建议将您当前的客户端脚本更改为 SS2。
下面是客户端脚本框架:
/**
* @NApiVersion 2.x
* @NScriptType ClientScript
*/
define(['N/currentRecord', 'N/ui/message', 'N/url', 'N/https', 'N/search'],
function(rec, msg, url, http, search) {
return {
fieldChanged : function(){ console.log('fired field changed');},
postSourcing: function(){ console.log('fired sourcing');}
};
});