通过地址簿脚本访问自定义地址字段

Script access to custom address field through addressbook

我在添加到地址表单的自定义字段中设置文本值时遇到问题。

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

此脚本(应用于自定义代码选项卡下的客户表单)不会使用 custentity_bsi_agycampus(客户表单中的自定义字段)中的文本值设置 custrecord_bsi_agy_div_bur_sd。但是,如果我将 custrecord_bsi_agy_div_bur_sd 更改为 addr1(地址表单中的默认字段),它会像我希望的那样工作。

这让我想知道我是否可以通过 'addressbook' 访问地址表单中的自定义字段,就像您可以访问所有其他地址字段一样。有谁知道该问题的答案或知道如何解决此问题?

我认为您需要使用地址作为子记录。在这之后玩弄一些图案:

// {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();