Имя: Пароль:
1C
1С v8
Поле объекта не обнаружено, но в отладчике работает
0 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): не совсем. жсон может логические свойства на значения другого типа поменять - и тоже жопа на простое "Если <свойство> Тогда". чтобы уж совсем правильно - то и сравнение надо на "=Истина" поменять.
4 BaZZiL
 
23.11.21
14:50
Поменял, как в (1) и (3) сравнение на "=Истина" тоже добавил.

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

Наверное, сервис как-то не так отдает булево в JSON...
5 BaZZiL
 
23.11.21
14:52
(4) Но в отладчике-то работает...
6 УдавВПопугаях
 
23.11.21
14:58
мб кэш мэш как всегда
7 Ёпрст
 
23.11.21
15:23
(4) пиши ответ сервера в лог, как вариант
8 BaZZiL
 
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
работать тоже будет, но через ж..по, часть методов отвалится+ пропадает отладка.
12 BaZZiL
 
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) Идеи закончились.
А по ххтп куда хоть щемится ?
14 BaZZiL
 
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" а не булево... доедет?
18 BaZZiL
 
24.11.21
09:25
(16) пересобрал с 8.3.17.87 - тоже самое.

(17) засунул числа 1 и 0, работает в апк, но блин...
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший