Suitescript, Как использовать query.Operator.ON, чтобы получить запись имеет точный день из базы данных? - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь получить записи на день рождения в [день] с помощью запроса ('N / query').И я ищу с помощью оператора "Operator.ON".Однако я всегда получаю пустой список из БД.Когда я изменяю с «Operator.ON» на «Operator.ON_AFTER», я могу получить результаты.

Мой формат даты - «D / M / YYYY». В БД дата записи - 5/5/2019'

Полный скрипт прилагается.Пожалуйста, дайте мне знать лучшие способы получить запись к точной дате.

 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

Ответы [ 2 ]

1 голос
/ 30 мая 2019

причина в том, что мое приложение использует GTM + 7. В форме средство выбора даты получает дату '1/5/2019' и передает эту строку в сценарий

В бэкэнде Netsuite получает этот день '1 /5/2019 'и разберите его на GTM + 7 -> 30/4/2019 и сравните в данных.Он никогда не совпадает с записью «1/5/2019» в дБ

. Я пытался преобразовать дату и часовой пояс из средства выбора даты, но безрезультатно.Я должен жестко указать дату + 1 день и перейти к условию, после чего он может получить точный день из БД.

0 голосов
/ 04 июня 2019

Вы можете создать сохраненный поиск и скрипт, ссылаясь на сохраненный поиск. Использование сохраненных данных уменьшит кодирование, и вы можете запустить сохраненный поиск в пользовательском интерфейсе, чтобы проверить, получаете ли вы правильный результат.

...