Как подключить отладчик к мобильному приложению на 1С

· 9 мин

Содержание

Отладчик к мобильному приложению 1С подключается удалённо: конфигуратор на компьютере поднимает сервер отладки по протоколу HTTP, а приложение на телефоне или в эмуляторе подключается к нему по сети. Дальше работают те же инструменты, что и на десктопе, — точки останова, пошаговое выполнение, табло и вычисление выражений.

Разница с обычной отладкой — в двух вещах. Во-первых, протокол: для мобильного устройства подходит только HTTP, потому что телефон обращается к серверу отладки по IP-адресу компьютера. Во-вторых, устройство и компьютер должны «видеть» друг друга по сети, иначе подключение не состоится. Эти два момента — причина почти всех проблем с запуском.

Ниже — порядок настройки отладчика, работа с точками останова, чтение журнала регистрации прямо на устройстве и разбор обмена с сервером по HTTP- и web-сервисам.

Что подготовить перед отладкой

Отладка идёт между двумя точками: конфигуратор (сервер отладки) и мобильное приложение (предмет отладки). Чтобы они соединились, нужно выполнить несколько условий.

  • 📱 Приложение разработчика мобильной платформы установлено на устройстве или в эмуляторе. Это готовый APK (Android) или сборка под iOS, которая умеет загружать вашу конфигурацию с веб-сервера и запускать её — собирать полноценное приложение на каждую правку не нужно.
  • 🌐 Конфигурация опубликована на веб-сервере (Apache или IIS) как мобильное приложение. Приложение разработчика скачивает её по указанному адресу.
  • 🔌 Устройство и компьютер в одной сети. Проще всего — общий Wi-Fi. Для Android есть обходной путь через USB (о нём ниже).
  • 🛠 Версии платформы совпадают. Версия мобильной платформы (приложения разработчика) не ниже версии, в которой вы ведёте разработку в конфигураторе. Расхождение старших номеров — частая причина, по которой отладчик молча не цепляется.

Для первых экспериментов удобнее эмулятор Android. Он запускается на том же компьютере, и сетевые проблемы почти исключены: из эмулятора адрес хост-машины доступен как 10.0.2.2.

Отдельно убедитесь, что отладка разрешена в самом приложении. В приложении разработчика это флажок на экране настроек запуска. В приложении, собранном через сборщик мобильных приложений, — параметр «Отладка разрешена» на этапе сборки. В релизной сборке для Google Play или App Store отладку обязательно выключают.

Как включить протокол отладки в конфигураторе

Сервер отладки запускает сам конфигуратор. Нужно переключить его на HTTP — по умолчанию отладка работает по TCP/IP, а он годится только для отладки на той же машине.

  1. Откройте Сервис → Параметры.
  2. Перейдите к настройкам запуска 1С:Предприятия, раздел дополнительных параметров (название вкладки может немного отличаться в разных релизах платформы).
  3. Выберите протокол отладки HTTP.
  4. Запомните или задайте порт отладки — он показан здесь же. Именно этот порт устройство будет указывать при подключении.

После смены протокола перезапустите конфигуратор, иначе сервер отладки останется на старом протоколе.

Теперь задайте адрес, по которому устройство найдёт сервер отладки. Это IP-адрес вашего компьютера в локальной сети, а не localhost и не 127.0.0.1: для телефона это были бы его собственные адреса. Узнать IP можно командой:

ipconfig        # Windows: смотрите IPv4-адрес Wi-Fi-адаптера
ip addr         # Linux/macOS

Если на компьютере включён файрвол, разрешите входящие подключения на порт отладки. Заблокированный порт — самая частая причина, по которой устройство «не видит» сервер, хотя сеть общая.

USB вместо Wi-Fi для Android

Когда общего Wi-Fi нет (например, рабочая сеть изолирует устройства друг от друга), для Android выручает проброс порта через adb:

adb reverse tcp:<порт> tcp:<порт>

После этого на устройстве в качестве адреса сервера отладки можно указать localhost — запросы с телефона пойдут на компьютер по USB-кабелю. Подставьте тот же номер порта, что выбран в конфигураторе. Для iOS такого механизма нет — там нужна общая сеть.

Как запустить приложение в режиме отладки

Когда протокол настроен, свяжите устройство с сервером отладки и подключитесь к сеансу.

  1. На устройстве откройте приложение разработчика и в настройках запуска укажите: адрес публикации вашей конфигурации (веб-сервер) и параметры отладки — адрес сервера отладки (IP компьютера) и порт.
  2. Запустите приложение. Оно загрузит конфигурацию и стартует как мобильное приложение.
  3. В конфигураторе откройте меню Отладка → Подключение. В списке предметов отладки появится ваш запущенный сеанс — мобильное приложение с его идентификатором.
  4. Выделите его и подключитесь. С этого момента точки останова в коде начнут срабатывать.

Чтобы не подключаться вручную каждый раз, включите автоподключение: Отладка → Автоподключение. В диалоге отметьте тип предмета отладки — мобильное приложение (или мобильный клиент, если вы отлаживаете именно его). Тогда конфигуратор сам подхватит сеанс, как только приложение стартует.

Мобильное приложение и мобильный клиент — не одно и то же. Приложение работает автономно, со своей базой на устройстве. Мобильный клиент — тонкий клиент к серверной базе, по сути мобильный аналог обычного тонкого клиента. Предмет отладки для них называется по-разному, учитывайте это при подключении и в автоподключении.

Если в списке предметов отладки пусто — проверьте по порядку: совпадает ли адрес сервера отладки на устройстве с IP компьютера, открыт ли порт в файрволе, разрешена ли отладка в приложении, одинаковы ли версии платформы.

Точки останова и пошаговое выполнение

Подключившись, вы отлаживаете мобильный код теми же средствами, что и серверный или клиентский. Горячие клавиши стандартные.

ДействиеКлавишаЧто делает
Поставить/снять точку остановаF9Останов на строке
Начать отладкуF5Запуск до ближайшей точки
Шаг черезF10Выполнить строку, не заходя в процедуру
Шаг вF11Зайти внутрь вызываемой процедуры
Шаг изShift+F11Выполнить до выхода из процедуры
Вычислить выражениеShift+F9Посмотреть значение под курсором или своё выражение
Остановить отладкуShift+F5Завершить сеанс отладки

Когда выполнение остановилось на точке, значения переменных смотрят в окне Табло или через «Вычислить выражение». В табло удобно закрепить несколько выражений и следить, как они меняются по шагам.

Условные точки останова экономят время, когда ошибка проявляется не на каждом проходе цикла. Щёлкните точку правой кнопкой, задайте условие останова — например, остановиться только когда переменная приняла нужное значение. Платформа остановит выполнение лишь при истинном условии.

Мобильный процессор медленнее настольного, а канал отладки идёт по сети. На сложных формах каждый шаг может ощутимо «задумываться». Не ставьте точки останова в обработчики, которые срабатывают десятки раз подряд (например, при прокрутке списка), — отладка встанет колом.

Код на встроенном языке мобильного приложения выполняется на самом устройстве. Поэтому в отладке видно и то, что зависит от окружения телефона: доступность камеры, геопозиции, работа с файловой системой устройства.

Журнал регистрации и логи на устройстве

Не всё ловится точками останова — фоновые задания, обработчики запуска, ошибки обмена проще разбирать по логам.

У мобильного приложения свой журнал регистрации, он хранится на устройстве вместе с базой. Записать в него диагностику из кода можно методом ЗаписьЖурналаРегистрации:

ЗаписьЖурналаРегистрации(
    "Обмен.Выгрузка",
    УровеньЖурналаРегистрации.Информация,
    ,
    ,
    "Выгружено документов: " + Формат(КоличествоДокументов, "ЧГ=0"));

Так вы оставляете «метки» в ключевых точках и потом читаете их последовательность. Число в сообщение подставляйте через Формат, а не склейкой со строкой напрямую, — иначе разделители разрядов могут вылезти в лог.

Для быстрой проверки значения прямо во время работы подходит Сообщить — текст выводится в окно сообщений приложения. Это грубее журнала, но нагляднее на ранней стадии.

Платформенные ошибки (необработанные исключения) приложение показывает пользователю и фиксирует у себя. Текст такой ошибки — первое, что стоит прочитать дословно: он часто прямо называет объект или метод, на котором всё сломалось.

Возьмите за правило логировать границы операций обмена и длительных расчётов: начало, количество обработанных объектов, завершение. Когда обмен «молча не отработал», именно эти записи показывают, на каком шаге оборвалась цепочка.

Диагностика обмена мобильного приложения с сервером

Автономное мобильное приложение почти всегда обменивается данными с центральной базой — через HTTP-сервисы, web-сервисы или план обмена. Половина «загадочных» багов живёт именно здесь: на устройстве всё падает, а в отладчике код отрабатывает чисто, потому что проблема на стороне сети или сервера.

Разбирайте обмен послойно:

  1. Код запроса. Поставьте точку останова там, где формируется и отправляется HTTPЗапрос. Проверьте URL, заголовки, тело. Посмотрите, что вернул сервер: код ответа и тело HTTPОтвет. Код 401/403 — проблема с авторизацией, 404 — неверный адрес сервиса, 500 — ошибка на стороне сервера базы.
  2. Сторона сервера. Если приложение обращается к HTTP-сервису серверной базы, отладьте и серверный обработчик — отдельным сеансом отладки по этой базе. Нередко ошибка там, а не на телефоне.
  3. Сам трафик. Когда непонятно, доходит ли запрос, пропустите его через HTTP-прокси (например, перехватывающий прокси на компьютере) и посмотрите реальные пакеты. Так видно, ушёл ли запрос вообще и что в нём было на самом деле.

Отдельная частая история — HTTPS и сертификаты. Если сервер за самоподписанным сертификатом, устройство может отклонять соединение. Для боевого обмена нужен доверенный сертификат; самоподписанный годится разве что для внутренних тестов.

Проверьте и доступность адреса с устройства: откройте URL сервиса в браузере телефона. Не открывается в браузере — не откроется и из приложения, дело в сети или в адресе, а не в коде.

Частые проблемы при отладке и их причины

Большинство затыков — не в логике приложения, а в обвязке: сеть, порт, версии. Вот с чего начинать разбор.

Диагностика: выберите симптом

Перед большим сеансом отладки удобно пройтись по короткому списку готовности — он отсекает те самые сетевые проблемы, которые съедают больше всего времени.

Готовность к отладке мобильного приложения
Выполнено: 0 / 6

Частые вопросы

Можно ли отлаживать мобильное приложение прямо на айфоне, без эмулятора?
Да. Схема та же: общий Wi-Fi, протокол HTTP, в настройках приложения адрес сервера отладки — IP компьютера. Для iOS нет проброса порта по USB, как у Android, поэтому устройство и компьютер обязательно должны быть в одной сети.
Чем отладка мобильного клиента отличается от отладки мобильного приложения?
Инструменты одни и те же — точки останова, пошаговое выполнение, табло. Разница в предмете отладки: мобильный клиент работает с серверной базой, и часть кода выполняется на сервере, поэтому его отлаживают отдельным сеансом по серверной базе. Автономное приложение исполняет весь код на устройстве.
Почему точка останова срабатывает на компьютере, но не на телефоне?
Код на компьютере и на устройстве — это разные сеансы. Убедитесь, что вы подключились именно к мобильному предмету отладки через Отладка → Подключение, а не к сеансу толстого клиента или серверной базы.
Нужно ли пересобирать приложение после каждой правки конфигурации?
Нет. В том и смысл приложения разработчика: оно загружает конфигурацию с веб-сервера. После правки переопубликуйте конфигурацию и перезагрузите её в приложении — пересборка APK или IPA не требуется. Полная сборка нужна только для публикации в магазинах.
Как посмотреть, что реально уходит на сервер при обмене?
Поставьте точку останова на формировании HTTPЗапрос и изучите URL, заголовки и тело, а код и тело ответа — после отправки. Если нужно увидеть сам трафик, пропустите его через перехватывающий HTTP-прокси на компьютере.