SuiteScript 2.0 setValue не разрешен в текущей подзаписи

Я пытаюсь установить значение для подсписка addressbookaddress. Но сценарий завершается ошибкой. Однако я могу получить значение субзаписи.

Ошибка:

Не поддерживается в текущей подзаписи: CurrentSubrecord.setValue.

Выполненный код:

/**
*@NApiVersion 2.0
*@NScriptType ClientScript
*/
define(["N/currentRecord"], function(currentRecord){

/*
    Copy phone number from vendor to address, when creating a new sublist entry
*/
var lineInit = function(context) { 
    var record = context.currentRecord;
    var sublistId = context.sublistId;

    var subrecord = record.getCurrentSublistSubrecord({
        sublistId: sublistId,
        fieldId: 'addressbookaddress'
    });

    if (!subrecord) {
        return;
    }

    var address = subrecord.getValue({
        fieldId: 'addr1'
    });

    subrecord.setValue({
        fieldId: 'addr1',
        value: 'test'
    });

    return;
}

return {
    lineInit: lineInit,
}

});

person J Net    schedule 14.01.2018    source источник


Ответы (1)


Клиентские скрипты имеют доступ только для чтения к субзаписям.

Клиентский скрипт можно развернуть в адресной форме. Используя значения из entryformquerystring, можно искать родительскую запись.

person Maria Berinde-Tampanariu    schedule 14.01.2018
comment
Таким образом, невозможно достичь того, что я пытаюсь сделать, или у вас есть предложения по обходному пути? - person J Net; 14.01.2018
comment
Возможно, вы сможете добиться той же функциональности с помощью клиентского скрипта, прикрепленного к форме адреса. - person Maria Berinde-Tampanariu; 14.01.2018
comment
К сожалению, это невозможно прикрепить к адресной форме. Я не могу найти его в списке ПРИЛОЖЕНИЙ К. - person J Net; 14.01.2018
comment
Можно, но работает немного иначе. Перейдите к настройке ›Формы› Адресные формы, настройте / отредактируйте адресную форму и введите файл сценария в поле «Пользовательский код». - person Maria Berinde-Tampanariu; 14.01.2018
comment
Круто, это действительно работает. Но как мне тогда получить доступ к чему-то на родителе? Потому что это было то место, где я должен был получить значение из записи поставщика. - person J Net; 14.01.2018
comment
Один из вариантов - получить значение скрытого поля entryformquerystring и использовать entityid из этого значения для поиска поставщика и получения адреса электронной почты. - person Maria Berinde-Tampanariu; 15.01.2018
comment
Похоже, что строка entryformquerystring недоступна в записи. - person J Net; 15.01.2018
comment
Как вы пытались получить значение поля? Я протестировал создание настраиваемого поля и установку {entryformquerystring} в качестве значения (формулы) по умолчанию. Это сработало, поэтому я ожидал, что получение значения по сценарию также сработает. В противном случае, можете ли вы также создать поле? - person Maria Berinde-Tampanariu; 15.01.2018
comment
Хорошо, теперь я понимаю вашу идею решения этой проблемы. Я создал поле и могу получить к нему доступ, но похоже, что значение по умолчанию для {entryformquerystring} не работает как формула. Я получаю следующую ошибку, если ввожу строку в значение по умолчанию и щелкаю стрелку, чтобы открыть представление формулы: formula = ERROR: Recursive Reference & target = VALIDATION_form.defaultvalue - person J Net; 15.01.2018
comment
Не знаю почему. Не думаю, что я открыл представление формулы. Я просто вставил значение и убедился, что флажок формулы установлен. - person Maria Berinde-Tampanariu; 15.01.2018
comment
Я сделал именно это сейчас, но поле оказалось пустым. record.getValue({ fieldId: 'hidden_entryformquerystring' }); "" Вы сделали что-нибудь еще, что могло бы изменить ситуацию? - person J Net; 15.01.2018
comment
Я ожидал, что созданное вами поле будет иметь другой идентификатор, который начинается с custrecord. Не могли бы вы использовать этот идентификатор как fieldID? С другой стороны, record.getValue({ fieldId: 'entryformquerystring' }); возвращает какое-либо значение? - person Maria Berinde-Tampanariu; 15.01.2018
comment
Я просто сократил его, чтобы было удобнее читать :) Он называется custrecord_hidden_entryformquerystr. Выполнение упомянутого вами запроса с идентификатором custrecord_hidden_entryformquerystr возвращает пустую строку - person J Net; 15.01.2018
comment
Ох, хорошо. Можете ли вы временно отобразить поле в форме адреса и посмотреть, заполнено ли оно? Поле хранится? Его нельзя хранить. - person Maria Berinde-Tampanariu; 15.01.2018
comment
Тип отображения изменен на Нормальный, и он отображается в форме адреса. Таким образом, он создается, только по умолчанию не работает. - person J Net; 15.01.2018
comment
Какой тип поля вы использовали? Я использовал текст произвольной формы. - person Maria Berinde-Tampanariu; 15.01.2018
comment
Я тоже. Вы просматриваете или редактируете адресную запись во время тестирования? - person Maria Berinde-Tampanariu; 15.01.2018
comment
Извините, я обнаружил проблему. Я проверил СТОИМОСТЬ МАГАЗИНА, но, видимо, что-то пошло не так. Теперь я сделал это снова, и строка запроса заработала. Я получил значение в своем скрипте. Так что теперь мне нужно только определить поиск. - person J Net; 15.01.2018