Всем доброго времени суток! Столкнулся с проблемой, что средствами платформы в JSON не возможно записать пустую дату, вернее если потом получить ее из получившегося текста JSON, значение вернется как 01.01.0001 5:07:48, и как потом выяснилось, это минимальная дата которую можно писать в JSON, т.е. если записать дату меньше этой, все равно вернется 01.01.0001 5:07:48 при десериализации. Собственно вопрос - это нормальное поведение платформы? И если да, то где можно почитать на официальных сайтах 1С про это ограничение? Или я что то не так делаем? Или что то не то с региональными настройками? Но тогда почему все нормально работает с датами больше 01.01.0001 5:07:48? Что делать и как быть, проявляется ли у кого нибудь еще такое поведение?
Вот код примера:
Для меня, и всех моих коллег, такое поведение оказалось неожиданностью...
Тестировалось на 8.3.10.2650 и 8.3.12.1469.
Было замечено что минимальное значение даты варьируется в зависимости от часового пояса.
Вот код примера:
ПустаяДата = '0001/01/01';
НастройкиСериализации = Новый НастройкиСериализацииJSON;
НастройкиСериализации.ФорматСериализацииДаты = ФорматДатыJSON.ISO;
НастройкиСериализации.ВариантЗаписиДаты = ВариантЗаписиДатыJSON.УниверсальнаяДата;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Новый Структура("Дата", ПустаяДата), НастройкиСериализации);
ТекстJSON = ЗаписьJSON.Закрыть();
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ТекстJSON);
ДанныеJSON = ПрочитатьJSON(ЧтениеJSON, , "Дата", ФорматДатыJSON.ISO);
Сообщить(Строка(ПустаяДата) + " >> " + СтрЗаменить(ТекстJSON, Символ(13) + Символ(10), "") + " >> " + ДанныеJSON.Дата, СтатусСообщения.БезСтатуса);
ПоказатьДля меня, и всех моих коллег, такое поведение оказалось неожиданностью...
Тестировалось на 8.3.10.2650 и 8.3.12.1469.
Было замечено что минимальное значение даты варьируется в зависимости от часового пояса.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Странно, что возвращается 01.01.0001. Вообще дата в json это число секунд по гринвичу с 1.01.1970. Еще в семерке, когда парсил json делал следующее
Дата = Дата(1970,1,1) + Окр((Число(мДата) / 1000 / 3600 -5) / 24);// пять подобрано эмипирически с учетом нужных часовых поясов.
Дата = Дата(1970,1,1) + Окр((Число(мДата) / 1000 / 3600 -5) / 24);// пять подобрано эмипирически с учетом нужных часовых поясов.
Данные типа Дата сериализуются в JSON автоматически, а вот обратное преобразование (десериализация) может быть выполнено не всегда. JSON не содержит типа Дата, значения даты представляются в нём строкой. Конечно, существуют некоторые форматы представления дат, но вообще говоря, внешний вид такой строки может быть самым разнообразным.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот