Преобразование даты в JSON

1. val_ka 09.11.20 06:15 Сейчас в теме
Есть такая проблема, что в случае если в ключе соответствия нет даты, то
РезультатСоответствие = ПрочитатьJSON(ЧтениеJSON,Истина,"closedDate",ФорматДатыJSON.ISO);

выдает ошибку "Представление даты имеет неверный формат("")"
Если в ключе соответствия есть дата, то всё работает хорошо.

Пробовала делать так
ДатаЗакрытия = Сред(ДатаЗакрытия, 1, 4) + Сред(ДатаЗакрытия, 6, 2) + Сред(ДатаЗакрытия, 9, 2) + Сред(ДатаЗакрытия, 12, 2) + Сред(ДатаЗакрытия, 15, 2) + Сред(ДатаЗакрытия, 18, 2);
							СтрокаСправочника.ДатаЗакрытияЗадачи = Дата (ДатаЗакрытия);

Тоже в случае с пустой датой выдает ошибку "невозможно привести к формату даты"

Что делать в таком случае?
По теме из базы знаний
Найденные решения
16. malikov_pro 1310 09.11.20 09:19 Сейчас в теме
(14)

Если Свойство = "dt" ИЛИ Свойство = "sunrise" ИЛИ Свойство = "sunset" Тогда
  Если Не ПустаяСтрока(Значение) Тогда
        Возврат ПрочитатьДатуJSON("new Date("+Формат(Значение, "ЧГ=")+")", ФорматДатыJSON.JavaScript);
  Иначе
    Возврат Дата(1,1,1);
  КонецЕсли
КонецЕсли;
deaddy64; criptid; user593586_fdaimond; KAV2; Kostt; +5 Ответить
2. HAMAZ 7 09.11.20 07:21 Сейчас в теме
Ctrl+F1 в конфигураторе "ПрочитатьJSON" выдает следующее:
<ИменаСвойствСоЗначениямиДата> (необязательный)
Тип: Массив, Строка, ФиксированныйМассив.
Массив, элементы которого содержат имена свойств JSON, для которых нужно вызывать восстановление даты из строки.
Если имя свойства указано в этом параметре и указано в параметре ИменаСвойствДляОбработкиВосстановления, то для таких свойств восстановление осуществляется в функции восстановления.
Если восстановление даты из значения свойства невозможно, то будет сгенерировано исключение.
Значение по умолчанию: Неопределено.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. malikov_pro 1310 09.11.20 07:42 Сейчас в теме
(1) Копипаста с ИТС

Хорошей заменой постобработки, в этом случае, является использование функции восстановления. Для применения функции восстановления необходимо описать саму функцию и несколько изменить само чтение документа:
Функция ФункцияВосстановленияЧтения(Свойство, Значение, ДополнительныеПараметры) Экспорт
    Если Свойство = "dt" ИЛИ Свойство = "sunrise" ИЛИ Свойство = "sunset" Тогда
        Возврат ПрочитатьДатуJSON("new Date("+Формат(Значение, "ЧГ=")+")", ФорматДатыJSON.JavaScript);
    КонецЕсли;
    Если Свойство = "pressure" Тогда
        Возврат Значение*0.75;
    КонецЕсли;
    Если Свойство = "temp" Тогда
        Возврат Значение-273.15;
    КонецЕсли;
    Если Свойство = "speed" Тогда
        Возврат Значение*1.61;
    КонецЕсли;
КонецФункции
&НаСервере
Процедура ЧтениеНаСервере()
    Чтение = Новый ЧтениеJSON;
    Чтение.ОткрытьФайл("c:\temp\weather.json");
    Данные = ПрочитатьJSON(Чтение, Ложь, , , "ФункцияВосстановленияЧтения", ЭтотОбъект);
    Чтение.Закрыть();
КонецПроцедуры
Показать
4. val_ka 09.11.20 08:23 Сейчас в теме
(3) да сижу работаю с этим. Выдает ошибку
Прикрепленные файлы:
6. malikov_pro 1310 09.11.20 08:27 Сейчас в теме
(4) Формат ISO примените, JS формат это timestamp.
7. val_ka 09.11.20 08:28 Сейчас в теме
(6)
JS формат это timestamp
немного не понимаю о чем вы
15. spacecraft 09.11.20 09:10 Сейчас в теме
(4) функция восстановления:
Функция ФункцияВосстановленияЧтения(Свойство, Значение, ДополнительныеПараметры) Экспорт
    Если Свойство = "closedDate" Тогда
        Результат = Дата(1,1,1);
        Если ЗначениеЗаполнено(Значение) Тогда
            Результат = ПрочитатьДатуJSON(Значение);
        КонецЕсли;
        Возврат Результат;
    КонецЕсли;

КонецФункции
Показать
5. val_ka 09.11.20 08:26 Сейчас в теме
у меня дата в формате ISO, пытаюсь поставить этот формат. Пока не получается
2. HAMAZ 7 09.11.20 07:21 Сейчас в теме
Ctrl+F1 в конфигураторе "ПрочитатьJSON" выдает следующее:
<ИменаСвойствСоЗначениямиДата> (необязательный)
Тип: Массив, Строка, ФиксированныйМассив.
Массив, элементы которого содержат имена свойств JSON, для которых нужно вызывать восстановление даты из строки.
Если имя свойства указано в этом параметре и указано в параметре ИменаСвойствДляОбработкиВосстановления, то для таких свойств восстановление осуществляется в функции восстановления.
Если восстановление даты из значения свойства невозможно, то будет сгенерировано исключение.
Значение по умолчанию: Неопределено.
8. malikov_pro 1310 09.11.20 08:30 Сейчас в теме
(7)

1. Формат ISO (значение ФорматДатыJSON.ISO). В этом случае дата сериализуется следующим образом: "2009-02-15T00:00:00+0400".

2. Формат JavaScript (значение ФорматДатыJSON.JavaScript). В этом случае дата сериализуется следующим образом: "new Date(1234656000000)".

https://www.wikiwand.com/ru/Unix-%D0%B2%D1%80%D0%B5%D0%BC%D1%8F
9. val_ka 09.11.20 08:31 Сейчас в теме
(8) это я понимаю
ПрочитатьДатуJSON(Значение, ФорматДатыJSON.ISO);

составила так, всё равно ошибка
10. malikov_pro 1310 09.11.20 08:32 Сейчас в теме
(9) Вариант двоеточие убрать в смещении.
11. val_ka 09.11.20 08:35 Сейчас в теме
(10) ошибку такую выдает
Прикрепленные файлы:
12. val_ka 09.11.20 08:39 Сейчас в теме
(10) я так понимаю это не срабатывает из-за того, что значение ключа не содержит ничего.
13. malikov_pro 1310 09.11.20 08:56 Сейчас в теме
(12) Проверяйте вх даные, преобразование работает корректно.
Прикрепленные файлы:
user1573319; +1 Ответить
14. val_ka 09.11.20 09:08 Сейчас в теме
(13)именно, что в случае если в значение есть дата, то она преобразуется, а может быть такое, что в значение нет даты и тип "неопределено", в этом случае программа вылетает с ошибкой. Я пытаюсь этот момент как-то обойти
16. malikov_pro 1310 09.11.20 09:19 Сейчас в теме
(14)

Если Свойство = "dt" ИЛИ Свойство = "sunrise" ИЛИ Свойство = "sunset" Тогда
  Если Не ПустаяСтрока(Значение) Тогда
        Возврат ПрочитатьДатуJSON("new Date("+Формат(Значение, "ЧГ=")+")", ФорматДатыJSON.JavaScript);
  Иначе
    Возврат Дата(1,1,1);
  КонецЕсли
КонецЕсли;
deaddy64; criptid; user593586_fdaimond; KAV2; Kostt; +5 Ответить
17. val_ka 09.11.20 09:31 Сейчас в теме
(16) спасибо, все заработало!
18. Kostt 24 16.11.21 23:28 Сейчас в теме
19. belyakooov 24 31.10.22 11:57 Сейчас в теме
Дата = XMLЗначение(Тип("Дата"), "2022-01-01T23:59:59");
unknown181538; ital; mistervoron; green_forest_polli; simgo83; +5 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот