首页 > 解决方案 > NetSuite - 自定义字段 - 分配给地址簿但无法使用 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);
  }
}

我确定我错过了一些简单的东西。非常感谢任何帮助!

压缩

标签: javascriptnetsuite

解决方案


地址上的自定义字段实际上在地址记录上

所以像:

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');}
        };
    });

推荐阅读