Трассировщик маршрута мобильного приложения

04.06.24

Разработка - Мобильная разработка

Поиск причины ошибки с мобильного клиента.

Работая с мобильным клиентом, и в частности передавая данные с сервера на ТСД и обратно, часто сталкивался с нарушением (ошибкой) передачи данных. В процессе поиска ошибки в некоторых случаях выяснялось, что ошибка возникает из-за нестабильной сетевой структуры. Возникали ошибки на WI-FI антеннах (WI-FI контур покрытия склада), которые нужно было перезагружать админам. Также ошибки самой сети (отвалился провод, потеря пакетов). А также ошибки на промежуточном оборудовании и серверах.

В связи с чем, для быстрого понимания где возникает ошибка (в коде или сети) был написан "трассировщик" маршрута. Суть данной разработки, это пройти весь путь от клиента/ТСД (места старта), включая внешние базы, и вернуться обратно без ошибок.

На просторах интернета есть функционал ("Использование MS SQL Profiler и 1С" или описанный в статье на //infostart.ru/1c/articles/19127/). Они проводят анализ используя технологический журнал или данные SQL. Это все необходимо "разворачивать", да и полного анализа они все равно не смогут предоставить.

Первое, что необходимо, это на стороне внешней/публикуемой базы прописать функцию HTTP-сервиса для установки факта получения сигнала/данных. Мы используем текстовое сообщение (ТекстСообщения). В эту переменную мы прописывает:
            1) В какой базе мы находимся.
            2) Где мы находимся (на сервере или на клиенте)
            3) На каком компьютере (функция ИмяКомпьютера())
            4) Точное время, когда мы сюда пришли (функция Формат(ТекущаяДата(), "ДЛФ=T"))

"Точное время, когда мы сюда пришли" берется с компьютера, на котором мы сейчас находимся (в данном случае на сервере 1С) и берется время именно этого компьютера.
 

//Функция HTTP-сервиса внешней/публикуемой базы
&НаСервере
Функция ЗамерВремениОтправкиИ_ПередачиДанных(Запрос)
    ТекстСообщения = "";
    
    ИнформационнаяБаза = "УТ";
    ТекстСообщения = ТекстСообщения+ИнформационнаяБаза+"_НаСервере - перешли на сервер "+ИнформационнаяБаза+" :"Символы.ПС+
    "Имя компьютера:"+ИмяКомпьютера()+Символы.ПС+
    Формат(ТекущаяДата(), "ДЛФ=T");
    
    Результат = ТекстСообщения;
    
    HTTPОтветСтруктура = Новый Структура("RequestJSON, ErrorText", Результат, "");
    Возврат Ответ(HTTPОтветСтруктура,Ложь);
КонецФункции

&НаСервере
Функция Ответ(Данные, Ошибка = Ложь)    
    Если Ошибка = Истина Тогда
        Ответ = Новый HTTPСервисОтвет(500);
    Иначе
        Ответ = Новый HTTPСервисОтвет(200);
    КонецЕсли;
    
    Ответ.Заголовки.Вставить("Accept-Charset", "utf-8");
    Ответ.Заголовки.Вставить("Content-Type", "application/json;charset=utf-8");
    Ответ.Заголовки["Cache-Control"] = "no-cache";
    
    Ответ.УстановитьТелоИзСтроки(ДанныеJSON(Данные));
    
    Возврат Ответ;
КонецФункции

&НаСервере
Функция ДанныеJSON(Данные)    

    ЗаписьJSON = Новый ЗаписьJSON;
    ПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто," ",Истина,,Истина,Истина,Истина,Истина,Истина);
    ЗаписьJSON.УстановитьСтроку(ПараметрыJSON);
    ЗаписатьJSON(ЗаписьJSON, Данные);
    
    Возврат ЗаписьJSON.Закрыть();
КонецФункции


Второе, это в мобильном приложении создаем команду для запуска самого парсинга (ТСД - место старта). Таким образом запуск "Трассировщика" произойдет на стороне мобильного приложения "НаКлиенте". В текстовое сообщение мы прописываем все пройденные этапы. А самое главное - фиксируем время их прохождения.

 

//Процедуры мобильного приложения (ТСД - место старта)
&НаКлиенте
Процедура ЗамерВремениОтправкиИ_ПередачиДанных_НаКлиенте(Команда)
    ТекстСообщения = "Имя ТСД: "+ИмяКомпьютера();
    
    ТекстСообщения = ТекстСообщения+Символы.ПС+
    "ТСД_НаКлиенте - нажата кнопка:"+Символы.ПС+
    Формат(ТекущаяДата(), "ДЛФ=T");
    
    ЗамерВремениОтправкиИ_ПередачиДанныхНаСервере(ТекстСообщения);
    
    ТекстСообщения = ТекстСообщения+Символы.ПС+
    "ТСД_НаКлиенте - выведено сообщение:"+Символы.ПС+
    Формат(ТекущаяДата(), "ДЛФ=T");
    
    Сообщить(ТекстСообщения);
КонецПроцедуры

Саму процедуру передачи текстового сообщения (где так же фексируются все пройденные этапы и их время) создаем на сервере.

//Процедуры мобильного приложения (ТСД - место передачи данных во внешние системы/базы)
&НаСервере
Процедура ЗамерВремениОтправкиИ_ПередачиДанныхНаСервере(ТекстСообщения)
    ТекстСообщения = ТекстСообщения+Символы.ПС+
    "ТСД_НаСервере - перешли на сервер ТСД:"+Символы.ПС+
    "Имя компьютера:"+ИмяКомпьютера()+Символы.ПС+
    Формат(ТекущаяДата(), "ДЛФ=T");
    
    ЗамерВремениОтправкиИ_ПередачиДанных(ТекстСообщения);
КонецПроцедуры

Передача текстового сообщения осуществляется через HTTP запрос методом GET, через параметр "MeasuringTheTimeOfSendingAndTransferringData".

&НаСервере
Функция ЗамерВремениОтправкиИ_ПередачиДанных(ТекстСообщения) Экспорт
    Попытка
        ТекстСообщения = ТекстСообщения+Символы.ПС+
        "ТСД_НаСервере - отправили данные с ТСД:"+Символы.ПС+
        Формат(ТекущаяДата(), "ДЛФ=T");
        
        Путь = "hs/TSD/MeasuringTheTimeOfSendingAndTransferringData";
        Ответ = Запрос_HTTP_GET(Путь);
        Если Ответ["ErrorText"] <> "" Тогда
            ТекстСообщения = ТекстСообщения+Символы.ПС+
            "ТСД_НаСервере - получили ответ от УТ:"+Символы.ПС+
            Формат(ТекущаяДата(), "ДЛФ=T");

            ТекстСообщения = ТекстСообщения+Символы.ПС+
            ("Ошибка отправки данных из ТСД. КодСостояния = "+Ответ.КодСостояния+Символы.ПС+
            Ответ.ПолучитьТелоКакСтроку());

            Возврат ТекстСообщения;
        КонецЕсли;
        
        Данные = Ответ["RequestJSON"];
        ТекстСообщения = ТекстСообщения+Символы.ПС+
        Данные;

        ТекстСообщения = ТекстСообщения+Символы.ПС+
        "ТСД_НаСервере - получили ответ от УТ:"+Символы.ПС+
        Формат(ТекущаяДата(), "ДЛФ=T");

    Исключение
        ТекстСообщения = ТекстСообщения+Символы.ПС+
        "Произошла ошибка при отправке данных из ТСД:"+Символы.ПС+
        Формат(ТекущаяДата(), "ДЛФ=T");

        ТекстСообщения = ТекстСообщения+Символы.ПС+ОписаниеОшибки();
    КонецПопытки;
    
    Возврат ТекстСообщения;
КонецФункции



//Константы:
//Сайт - указан сайт/домен подключения
//ВнешняяБаза - указана база подключения
&НаСервере
Функция Запрос_HTTP_GET(Путь) Экспорт    
    Сайт = Константы.Сайт.Получить();//Имя сервера внешней базы (например: Сервер_1С-1)
    ВнешняяБаза = Константы.ВнешняяБаза.Получить();// Имя внешней базы (например: УТ)  
    ПолныйПуть = СубДоменБазы + Путь;
    
    ФайлРезультата = ПолучитьИмяВременногоФайла();
    Соед = Новый HTTPСоединение(Сайт,,,,,1800);
    
    ЗаголовокHTTP = Новый Соответствие();
    ЗаголовокHTTP.Вставить("Content-Type", "application/x-www-form-urlencoded");
    
    Ответ = Соед.Получить(Новый HTTPЗапрос(ПолныйПуть),ФайлРезультата);
    
    Если Ответ.КодСостояния = 200 Тогда    
        Текст = Новый ЧтениеТекста(ФайлРезультата, КодировкаТекста.UTF8);
        СодRaw = Текст.Прочитать();
        Чтение = Новый ЧтениеJSON();
        Чтение.УстановитьСтроку(СодRaw);
        Данные = ПрочитатьJSON(Чтение,Истина);

        возврат Данные;
    Иначе
        Данные = Новый Структура();
        ТекстСообшения = "Произошла ошибка. Код состояния: "+Ответ.КодСостояния;
        Данные.Вставить("ErrorText",ТекстСообшения);
        возврат Данные;
    КонецЕсли;    
КонецФункции

 

Мобильный МобильныйКлиент ТСД Трассировка Трассировщик ПередачаДанных ПоискОшибок

См. также

Мобильная разработка Сканер штрих-кода Терминал сбора данных Управляемые формы Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн - все это содержит в себе решение 1С "Штрихкод-информер" (штрих-код чекер). Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.

3000 руб.

03.12.2018    62405    213    103    

181

Мобильная разработка Мессенджеры и боты Платформа 1С v8.3 Платные (руб)

Теперь создать telegram-бота - элементарно. Достаточно просто нарисовать блок-схему телеграм-бота, и он сразу заработает. Это возможно при использовании Графического конструктора телеграм-ботов. Это единственный конструктор ботов для telegram, чье качество и функционал подтверждены фирмой 1С, есть сертификат 1С:Совместимо. Расширение в интерактивном режиме, с помощью блок-схем, позволяет с минимальными трудозатратами создать телеграм-ботов в любой конфигурации, работающей на платформе «1С:Предприятие 8.3».

13200 руб.

27.12.2021    42168    119    167    

214

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Программист Пользователь Платформа 1С v8.3 Мобильная платформа 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный ТСД (терминал сбора данных) сканер для 1С для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически.

2000 руб.

22.04.2019    103006    632    191    

336

Мобильная разработка Платформа 1С v8.3 1C:Бухгалтерия Финансовые услуги, инвестиции Управленческий учет Платные (руб)

Мобильное приложение и конфигурация 1С для автоматической торговли на бирже через API Тинькофф банка. Достаточно задать настройки, нажать «Пуск», и робот сам торгует ежедневно.

7000 руб.

25.05.2022    6265    2    0    

6

Мобильная разработка Программист Платформа 1С v8.3 Мобильная платформа 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Абонемент ($m)

Товары (либо другие учетные объекты) могут быть промаркированы штрихкодами либо быть без штрихкодов, но с число-буквенным обозначением (артикулом, VIN-номером и т.д.). И та, и другая ситуация не проблема для SimpleUI. Но что делать, если нет ни того, ни другого? Вообще никакой маркировки. Как можно максимально ускорить работу с таким объектами? В статье показываю новые фичи релиза и готовые для встраивания поисковые комбайны на все случаи жизни. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

14.04.2025    1402    4    informa1555    0    

15

Мобильная разработка Программист Платформа 1С v8.3 Абонемент ($m)

В Simple появился еще один онлайн-режим, не через REST-API, а через веб-сокеты. Показываю, что это дает, ради чего было сделано. А также два чисто онлайновых примера с такими обработчиками еще и с использованием новой ActiveCV 2.0. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

07.02.2025    3660    informa1555    3    

28

Мобильная разработка WEB-интеграция Программист Мобильная платформа Абонемент ($m)

Экспериментальный релиз и простенький скрипт к нему закрывает потребности в любых видах синхронизации между устройствами Simple и между Simple и бек-системами (например 1С). По сути – это очень простой python-скрипт, который можно запустить на доступной машине, сервере или VPS и он будет связывать клиентские устройства между собой и с 1С или другими бек-системами. В самой платформе появилось для этого множество доработок для поддержки стабильного постоянного соединения, докачки больших файлов и работе в фоне. Дополнение к основной статье https://infostart.ru/1c/tools/1153616/

1 стартмани

23.08.2024    1907    6    informa1555    1    

13
Оставьте свое сообщение