Доступ скрипта к настраиваемому полю адреса через адресную книгу

У меня возникли проблемы с установкой текстового значения в настраиваемом поле, которое я добавил в форму адреса.

function fieldChanged_form(type, name) {
    if (name == 'custentity_bsi_agycampus') {

        var lnSeq = nlapiFindLineItemValue('addressbook', 'defaultbilling', 'T');

        if (lnSeq > 0) {
            console.log("selected line " + lnSeq);
            nlapiSelectLineItem('addressbook', lnSeq);
            var agency_campus = nlapiGetFieldText('custentity_bsi_agycampus');
            nlapiSetCurrentLineItemValue('addressbook',
                    'custrecord_bsi_agy_div_bur_sd', agency_campus, true, true);
            console.log('agency' + ',' + agency_campus);
        }

        nlapiCommitLineItem('addressbook');
        console.log('after commit: '
                + nlapiGetCurrentLineItemValue('addressbook',
                        'custrecord_bsi_agy_div_bur_sd'));
    }
}

Этот сценарий (примененный к форме клиента на вкладке настраиваемого кода) не будет устанавливать custrecord_bsi_agy_div_bur_sd с текстовым значением из custentity_bsi_agycampus (настраиваемое поле в форме клиента). Однако, если я изменю custrecord_bsi_agy_div_bur_sd на addr1 (поле, которое используется по умолчанию в форме адреса), он будет работать так же, как я бы хотел.

Это заставляет меня задаться вопросом, могу ли я получить доступ к своему настраиваемому полю в форме адреса через «адресную книгу», как вы можете для всех других полей адреса. Кто-нибудь знает ответ на этот вопрос или знает, как я могу решить эту проблему?


person Gus    schedule 25.04.2016    source источник
comment
Какое значение текста вы пытаетесь установить в качестве значения для custrecord_bsi_agy_div_bur_sd? Возможно ли, что он принимает только числовые данные?   -  person TonyH    schedule 26.04.2016
comment
custrecord_bsi_agy_div_bur_sd - текстовое поле произвольной формы. Он будет принимать строки.   -  person Gus    schedule 27.04.2016


Ответы (1)


Я считаю, что вам нужно работать с адресами как с дополнительными записями. Поиграйте с чем-нибудь с узором после этого:

// {nlobjSubrecord} Get one of the addresses off the sublist
var subrecord = {};

nlapiSelectLineItem('addressbook', 1);
subrecord = nlapiEditCurrentLineItemSubrecord('addressbook', 'addressbookaddress');

// Set the data on the subrecord
subrecord.setFieldValue('attention', 'Some Guy');
subrecord.setFieldValue('addr1', '1234 5th St');
subrecord.setFieldValue('addr2', 'Apt 234');
subrecord.setFieldValue('addrphone', '5558675309');
subrecord.setFieldValue('city', 'Scottsdale');
subrecord.setFieldValue('state', 'AZ');
subrecord.setFieldValue('country', 'US');
subrecord.setFieldValue('zip', '85260');

// Commit the subrecord to its parent before submitting the parent itself
subrecord.commit();
person erictgrubaugh    schedule 25.04.2016
comment
Да, с 2014. 2 Я считаю, что вы должны делать это так, как показывает Эрик. - person TMann; 26.04.2016
comment
Я вижу что-то подобное в справочной документации, но сначала вам нужно загрузить определенную запись. Я пытаюсь заставить это работать с новыми клиентами. Запись еще не создана, и еще нет внутреннего идентификатора. Как мне получить доступ к полям адресной книги в такой новой записи? Код, который я вставил выше, работает для копирования текста в поля адресной книги новых клиентов для таких полей, как имя компании и addr1. Я не могу понять, почему он будет работать с этими полями, а не с моими настраиваемыми полями. - person Gus; 27.04.2016
comment
Код в этом ответе должен работать нормально независимо от того, является ли запись новой или существующей. Вы либо выбираете существующую строку адресной книги, либо новую, а затем редактируете или создаете новую адресную строку соответствующим образом, включая установку значений в настраиваемом поле. - person erictgrubaugh; 27.04.2016