Страница 1 из 1

Функция mGetUserDataAsJSON, как получить значение даты?

СообщениеДобавлено: Пт окт 04, 2019 4:12 pm
RybolovlevN
Добрый день, переделываю немного скрипт "Поздравление именинников".
Использую функцию mGetUserDataAsJSON:

Часть кода//

dBirthday: double;
//////
sJSON := mGetUserDataAsJSON(iUIN, 'Birthday');
JSONGetDateTime(sJSON, 'Birthday', dBirthday); // получение даты рождения
sBirthday:= FormatDateTime('ddmmyyyy', dBirthday);

Функция возвращает значение 01012004. Хотя я несколько раз проверил данные пользователя, менял дату рождения - бесполезно.

Другие данные (WorkDept, WorkPosition) выводит правильно.

Для интереса попробовал другие данные из функции mGetUserDataAsJSON с типом double
LastAccess и Registered - выводит опять 01012004.

В чем моя ошибка? Спасибо заранее.

Re: функция mGetUserDataAsJSON

СообщениеДобавлено: Вс окт 06, 2019 1:45 pm
Алексей Пикуров
mGetUserDataAsJSON возвращает дату в формате double, а функция JSONGetDateTime — обрабатывает текстовую строку, а не double-значение, в справке это описано в примере.

Для JSON не хватает функций для работы с типом double, я добавлю.

А пока делайте так:

Код: Выделить всё
sDateTime := mGetUserAttribute(iUIN, 'Home_Birthday');

Получите текстовую строку типа "09.10.1979.00.00.00" и с помощью Fetch, StrToInt и EncodeDate получите нужное значение в Double.

Для отладки скриптов, чтобы увидеть промежуточные значения переменных, рекомендую использовать функцию mLogScript.

Re: Функция mGetUserDataAsJSON, как получить значение даты?

СообщениеДобавлено: Вс окт 06, 2019 2:13 pm
Алексей Пикуров
P.S. Можно ещё так получить double значение даты:

Код: Выделить всё
sJSON := mGetUserDataAsJSON(iUIN, 'Birthday'); // получили JSON с данными
JSONGetString(sJSON, 'Birthday', sBirthday); // достали оттуда строку
dt := StrToFloat(sBirthday); // преобразовали строку в float (этот тот же double, с бОльшей размерностью)

Re: Функция mGetUserDataAsJSON, как получить значение даты?

СообщениеДобавлено: Вт окт 08, 2019 5:07 pm
Алексей Пикуров
В новой версии добавили десяток новых функций, с ними будет удобнее решать задачи, как у вас.

Re: Функция mGetUserDataAsJSON, как получить значение даты?

СообщениеДобавлено: Ср окт 09, 2019 4:36 pm
RybolovlevN
Замечательно, благодарю Вас! Будем пробовать.