Suitescript, Как использовать query.Operator.ON, чтобы получить запись имеет точный день из базы данных?
Я пытаюсь получить записи, у которых есть день рождения в [день], используя запрос ('N / query'). И я ищу с помощью оператора "Operator.ON". Однако я всегда получаю пустой список из БД. Когда я переключаюсь с "Operator.ON" на "Operator.ON_AFTER", я могу получить результаты.
Мой формат даты: "D/M/YYYY". В БД дата записи: "05.01.2009".
Полный скрипт прилагается. Пожалуйста, дайте мне знать лучшие способы получить запись к точной дате.
require(['N','N/search','N/record','N/query', 'N/currentRecord', 'N/format']);
var query = require('N/query');
var search = require('N/search');
var currentRecord = require('N/currentRecord');
var birth = currentRecord.get().getValue({
fieldId: 'custentity_date_of_birth'
});
var customSearch = query.create({
type: query.Type.CUSTOMER
});
var relContact = customSearch.autoJoin({
fieldId: 'contact'
});
customSearch.columns = [
customSearch.createColumn({
fieldId: 'Id'
}),
customSearch.createColumn({
fieldId: 'firstname'
}),
customSearch.createColumn({
fieldId: 'lastname'
}),
customSearch.createColumn({
fieldId: 'email'
}),
customSearch.createColumn({
fieldId: 'custentity_date_of_birth'
}),
relContact.createColumn({
fieldId: 'Id'
})
];
var condFName = customSearch.createCondition({
fieldId: 'firstname',
operator: query.Operator.IS,
values: 'trung'
});
var condLName = customSearch.createCondition({
fieldId: 'lastname',
operator: query.Operator.IS,
values: 'null'
});
var condBirth = customSearch.createCondition({
fieldId: 'custentity_date_of_birth',
operator: query.Operator.ON,
values: '1/5/2019'
});
var condGetBirth = customSearch.createCondition({
fieldId: 'custentity_date_of_birth',
operator: query.Operator.EMPTY_NOT
});
customSearch.condition = customSearch.and(condFName, condLName, condBirth);
var sResult = customSearch.run();
sResult.results
1 ответ
Причина в том, что мое приложение использует GTM+7. В форме средство выбора даты получает дату "1/5/2019" и передает эту строку в сценарий.
В бэкэнде Netsuite получает этот день "05.01.2009" и анализирует его на GTM+7 -> 30/4/2019 и сравнивает в данных. Он никогда не совпадает с записью "5/5/2019" в БД
Я пытался преобразовать дату и часовой пояс из средства выбора даты, но безрезультатно. Я должен жестко указать дату +1 день и перейти к условию, после чего он может получить точный день из БД.
Вы можете создать сохраненный поиск, и сценарий будет ссылаться на сохраненный поиск. Использование сохраненного уменьшит кодирование, и вы можете запустить сохраненный поиск в пользовательском интерфейсе, чтобы проверить, получаете ли вы правильный результат.