#netsuite #suitescript
#netsuite #suitescript
Вопрос:
Мы пытаемся в RESTLet получить доступ к подсписку «demandplandetail» из плана спроса на товары NetSuite. Все идет нормально до определенного момента. Мы можем загрузить его и обработать план спроса на 2020 год. Однако здесь это расстраивает.
Мы знаем (можем видеть из NetSuite), что есть данные также за 2021 год. Однако получить к нему доступ из SuiteScript кажется очень сложным.
1-е решение) В плане спроса на товар есть поле «год». Хорошо, просто установите значение 2021, сохраните и перезагрузите запись. Результат: сохранение проигнорировано, год по-прежнему 2020.
2-е решение) Установите год, используя объект Date, как в:
var demandPlan = record.load(...)
var d = new Date();
demandPlan.setValue({
fieldId: 'year',
value: d
});
Выдает следующее:
:"TypeError: Cannot find function getFullYear in object NaN. (NLRecordScripting.scriptInit$lib#59)","stack":["setDatesForMonthAndYear(NLRecordScripting.scriptInit:108)","anonymous(N/serverRecordService)"
при сохранении записи. Я также получаю то же самое, используя (различные) строки, соответствующие приемлемым форматам даты (как в ‘1/1/2021’). Я также попробовал пакет format, выдающий мне строку даты -> тот же результат.
Также где-то читал, что вам может потребоваться установить начальную дату (поле ‘startdate’) в записи. Пробовал несколько вариантов, но он упорно отказывается :(.
Интересно, видел ли кто-нибудь что-нибудь подобное?
С наилучшими пожеланиями, Тони
Ответ №1:
Привет, пожалуйста, попробуйте приведенный ниже код, также проверьте, передаете ли вы объект date в поле, а не в строку date.
function formatDate() {
var dateROBD = format.parse({
value: new Date(),
type: format.Type.DATE
});
// this line optional if you want to try with or else ignore this
dateROBD = convertUTCDateToLocalDate(new Date(dateROBD));
return dateROBD;
}
function convertUTCDateToLocalDate(date) {
var newDate = new Date(date.getTime() date.getTimezoneOffset() * 60 * 1000);
var offset = date.getTimezoneOffset() / 60;
var hours = date.getHours();
newDate.setHours(hours - offset);
return newDate;
}
Комментарии:
1. Привет, Абдул, спасибо за твой ответ. Пробовал оба варианта, но получил ту же ошибку. С наилучшими пожеланиями, Тони
2. @ToniJussila это работает, только если вы передаете объект date. В любом случае, всего наилучшего.
Ответ №2:
Хорошо, загадка решена. Оказалось, что это не поддерживается в SuiteScript 2.0, но вам нужно использовать 1.0.