Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Поле объекта не обнаружено, но в отладчике работает

Поле объекта не обнаружено, но в отладчике работает
Я
   BaZZiL
 
23.11.21 - 12:59
Функция в мобильном приложении запрашивает по хттп данные, возвращая структуру с требуемыми данными, при запуске в режиме отладки на устройстве всё работает,
но после сборки приложения в апк и запуске на устройстве пишет, что "Поле объекта не обнаружено"

ДанныеНакладной = ПолучитьДанныеНакладной(ИДНакладной);
Если ДанныеНакладной.Успех Тогда
    НомерНакладнойНаСборку = ДанныеНакладной.НомерНакладной;//здесь ошибки нет
    Если ДанныеНакладной.Отгружен Тогда //Здесь ошибка Поле объекта не обнаружено (Отгружен)

...
ОтветСервера = глHTTPСоединение.Получить(HTTPЗапрос);
Если ОтветСервера.КодСостояния = 200 Тогда
    Ответ = ОтветСервера.ПолучитьТелоКакСтроку();
    ЧтJSON = Новый ЧтениеJSON();
    ЧтJSON.УстановитьСтроку(Ответ);
    ОтветДанные = ПрочитатьJSON(ЧтJSON);
    ЧтJSON.Закрыть();
    Возврат Новый Структура("Успех,НомерНакладной,Собран,Отгружен",Истина,ОтветДанные.НомерНакладной,ОтветДанные.Собран,ОтветДанные.Отгружен);//как только ни заворачивал несчастное "Отгружен"
Иначе
    Возврат Новый Структура("Успех,ОписаниеОшибки",Ложь,ОтветСервера.КодСостояния);
КонецЕсли;

JSON:
{
    "НомерНакладной": "ЭЦ0017732",
    "Собран": true,
    "Отгружен": true
}
   Ёпрст
 
1 - 23.11.21 - 13:55
(0) будь проще
СтруктураОтвета = Новый Структура("Успех,НомерНакладной,Собран,Отгружен",Истина,"",Ложь,Ложь);

.....
ЗаполнитьЗначенияСвойств(СтруктураОтвета,ОтветДанные);
Возврат СтруктураОтвета ;
   Ёпрст
 
2 - 23.11.21 - 13:55
будешь независим от данных json ответа
   серый КТУЛХУ
 
3 - 23.11.21 - 14:00
(2): не совсем. жсон может логические свойства на значения другого типа поменять - и тоже жопа на простое "Если <свойство> Тогда". чтобы уж совсем правильно - то и сравнение надо на "=Истина" поменять.
   BaZZiL
 
4 - 23.11.21 - 14:50
Поменял, как в (1) и (3) сравнение на "=Истина" тоже добавил.

Теперь оно думает, что отгружено всегда "Ложь".

Наверное, сервис как-то не так отдает булево в JSON...
   BaZZiL
 
5 - 23.11.21 - 14:52
(4) Но в отладчике-то работает...
   УдавВПопугаях
 
6 - 23.11.21 - 14:58
мб кэш мэш как всегда
   Ёпрст
 
7 - 23.11.21 - 15:23
(4) пиши ответ сервера в лог, как вариант
   BaZZiL
 
8 - 23.11.21 - 16:13
(7) Вывел ответ сервера в приложении на многострочное поле ввода, в отладке булевы значения есть, а собранном апк куда-то пропали

{
    "НомерНакладной": "ЭЦ0017732",
}
   Ёпрст
 
9 - 23.11.21 - 16:58
(8) ну вот и ответ.. прилетели тебе null
   Ёпрст
 
10 - 23.11.21 - 16:59
(8) собранный апк и версия 1с-ины совпадают хоть ? А то мк от 20 платформы, а сам сервер..15, например ?
   Ёпрст
 
11 - 23.11.21 - 17:00
работать тоже будет, но через ж..по, часть методов отвалится+ пропадает отладка.
   BaZZiL
 
12 - 23.11.21 - 17:02
Нет, и в отладке, и в браузере по-прежнему джсон с булевыми

{
    "НомерНакладной": "ЭЦ0017732",
    "Собран": true,
    "Отгружен": true
}

Сервер 1С:Предприятие 8.3 (8.3.17.1851)
Мобильная платформа 8.3.17.76
   Ёпрст
 
13 - 23.11.21 - 17:30
(12) Идеи закончились.
А по ххтп куда хоть щемится ?
   BaZZiL
 
14 - 23.11.21 - 17:56
(13) щемится в свою базу локально по wifi.

Функция НомерНакладнойGET(Запрос)
    Ответ = Новый HTTPСервисОтвет(200);
    НакладнаяИД = Запрос.ПараметрыURL.Получить("docGUID");
    Накладная = Документы.<Накладная>.ПолучитьСсылку(Новый УникальныйИдентификатор(НакладнаяИД));
    
    Запрос = Новый Запрос;
    //...


    Данные = Новый Структура;
    
    Данные.Вставить("НомерНакладной",Результат.Номер);
    Данные.Вставить("Собран",Результат.Собран);
    Данные.Вставить("Отгружен",Результат.Отгружен);

    
    ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, Символы.Таб);
    Запись = Новый ЗаписьJSON;
    Запись.УстановитьСтроку(ПараметрыЗаписиJSON);

    ЗаписатьJSON(Запись,Данные);
    Результат = Запись.Закрыть();
    Ответ.УстановитьТелоИзСтроки(Результат);
    Ответ.Заголовки.Вставить("Content-type", "application/json");
    Ответ.Заголовки.Вставить("charset", "utf-8");

    Возврат Ответ;
КонецФункции
   Ёпрст
 
15 - 23.11.21 - 18:05
(14) хз тов. майор, пробовать только версию поднять, попробуй собери приложение с последней версией мобильной платформы, которая поддерживает 17
   Ёпрст
 
16 - 23.11.21 - 18:05
ну или, там вроде до 19/20 можно от 18 взять последнюю
   серый КТУЛХУ
 
17 - 23.11.21 - 18:11
ну чо, попробуй засунуть тогда строки типа "0" / "1" а не булево... доедет?
   BaZZiL
 
18 - 24.11.21 - 09:25
(16) пересобрал с 8.3.17.87 - тоже самое.

(17) засунул числа 1 и 0, работает в апк, но блин...

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.