NetSuite - Пользовательские поля - Присвоен адресной книге, но не может получить доступ, используя JS - PullRequest
2 голосов
/ 03 апреля 2020

В настоящее время я пишу сценарий в Заказе на продажу для извлечения пользовательского поля, прикрепленного к выбранному адресу доставки. Я могу получить все поля адреса (city, zip и т. Д. c), но не могу понять, как получить доступ к любому из прикрепленных пользовательских полей к адресу.

Пример сценария:

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

Я уверен, что упускаю что-то простое. Любая помощь с благодарностью!

Zip

1 Ответ

1 голос
/ 03 апреля 2020

Пользовательские поля для адреса на самом деле находятся в адресной записи

, что-то вроде:

SS1.0 dynamici c mode. Видимо, только на стороне сервера.

var customer = nlapiLoadRecord('customer', custid, {recordmode:'dynamic'});
...
customer.selectLineItem('addressbook', i);
var addr = customer.editCurrentLineItemSubrecord('addressbook', 'addressbookaddress');
console.log(addr.getFieldValue('custrecord19'));

или на стороне сервера SS1 не динамичны c

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');}
        };
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...