Имя: Пароль:
1C
1С v8
Получение даты по API
0 miv
 
27.10.20
11:23
Столкнулся с такой проблемой, получаю ответ от api с нужной инфой из офд. всё бы ничего, но даты чеков вообще не те что нужны, к примеру по кассе дата 09.10.2020 , а в ответе приходит 19.01.1970. Как быть ? 1с почему то неверно десериализует именно дату, с остальными данными проблем нет.
1 acht
 
27.10.20
11:26
(0) > Как быть ?
Что-то сделать. Например, показать код и почитать СП по поводу десериализации дат из JSON, функций восстановления и т.д.
2 miv
 
27.10.20
11:32
(1) СП = ЗаполнитьПараметры("POST","/ofdapi/v1/documents");     
    дата = "2020-10-09";
    Body = "{ ""fiscalDriveNumber"":""9287440300813581"", ""date"" :" + символ(34) + дата + символ(34) + "}";
    
    Ответ = ОтправкаИПолучение(СП,Body);
    ЗаполнениеЛога(Ответ);
    Уровень = 0;
    Если Ответ.StatusCode = 200 Тогда

    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON, Ответ);
    СтрJSON = ЗаписьJSON.Закрыть();                 
    ОтветТаблица = UnJSON(СтрJSON);
        
        
    Для Каждого Данные из ОтветТаблица.body.items Цикл
        
    Данные.dateTime = ПрочитатьДатуJSON("new Date("+Формат(Данные.dateTime, "ЧГ=")+")", ФорматДатыJSON.JavaScript) + (18526 * 60 * 60 * 24) - (6 *  60 * 60) - (14 * 60) ;
    Данные.receivingDate = ПрочитатьДатуJSON("new Date("+Формат(Данные.receivingDate, "ЧГ=")+")", ФорматДатыJSON.JavaScript);
    
    КонецЦикла;
3 miv
 
27.10.20
11:33
в 3 сточке с конца пытался в ручную подогнать нужную дату ))
4 acht
 
27.10.20
11:34
UnJSON что делает?
5 acht
 
27.10.20
11:36
ОтправкаИПолучение что возвращает?
6 miv
 
27.10.20
11:47
(5)     //Параметры соединения        
    Таймаут                   = 120;
    //ssl = Новый ЗащищенноеСоединениеOpenSSL(Новый СертификатКлиентаWindows(), Новый СертификатыУдостоверяющихЦентровWindows());    
    ssl = Новый ЗащищенноеСоединениеOpenSSL();    
    //Устанавливаем соединение и передаем запрос
    НТТР                        = Новый HTTPСоединение(СтруктураПараметров.Сервис, , , , , Таймаут,ssl );     
    ЗапросHTTP                  = Новый HTTPЗапрос(СтруктураПараметров.Запрос,СтруктураПараметров.Заголовки);  
        
    Response             = Новый Структура;    
    
    Если НЕ Body = Неопределено Тогда
        ЗапросHTTP.УстановитьТелоИзСтроки(Body);             
    КонецЕсли;    
    
    Попытка
        ОтветHTTP               = НТТР.ВызватьHTTPМетод(СтруктураПараметров.Метод,ЗапросHTTP);
        //ОтветHTTP               = НТТР.Получить(ЗапросHTTP);
        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.УстановитьСтроку(ОтветHTTP.ПолучитьТелоКакСтроку());
        BodyResponse = ПрочитатьJSON(ЧтениеJSON,Истина);
                
        Response.Вставить("StatusCode", ОтветHTTP.КодСостояния);
        Response.Вставить("Headers", ОтветHTTP.Заголовки);
        
        Если ТипЗнч(BodyResponse) = Тип("Соответствие") Тогда
            Response.Вставить("Body", BodyResponse);            
        ИначеЕсли ТипЗнч(BodyResponse) = Тип("Массив") Тогда
            Response.Вставить("Body", BodyResponse);
        Иначе
            Response.Вставить("Body", Неопределено);
        КонецЕсли;
        
    Исключение
        Response.Вставить("StatusCode", ОписаниеОшибки());
        Response.Вставить("Headers", Неопределено);
        Response.Вставить("Body", Неопределено);
    КонецПопытки;
    Response.Вставить("Отказ", Ложь);
    
    Возврат Response;
7 acht
 
27.10.20
11:52
(6) Глобальный контекст (Global context)
ПрочитатьJSON (ReadJSON)
Синтаксис:
ПрочитатьJSON(<ЧтениеJSON>, <ПрочитатьВСоответствие>, <ИменаСвойствСоЗначениямиДата>, <ОжидаемыйФорматДаты>, <ИмяФункцииВосстановления>, <МодульФункцииВосстановления>, <ДополнительныеПараметрыФункцииВосстановления>, <ИменаСвойствДляОбработкиВосстановления>, <МаксимальнаяВложенность>)
8 miv
 
27.10.20
11:52
(4) получаем таблицу значений с десериализованными данными
9 rozer76
 
27.10.20
13:05
(0) тебе в (1) намекают почитать в методе ПрочитатьJSON сначала поглядеть про <ОжидаемыйФорматДаты> а потом если не поможет в <ИмяФункцииВосстановления>
Закон Брукера: Даже маленькая практика стоит большой теории.