При разработке и отладке мобильных приложений на платформе 1С разработчики могут столкнуться с неприятной и трудно диагностируемой проблемой: сеанс отладки внезапно прерывается. Давайте подробно разберем ситуацию, когда отладчик на компьютере завершает работу, а на экране мобильного устройства появляется сообщение об ошибке, особенно в момент интерактивных действий в конфигураторе.
Типичный сценарий выглядит так: вы запускаете отладку мобильного приложения, исполнение кода корректно останавливается в установленной точке останова. Вы можете успешно перемещаться по коду с помощью клавиш F10 (Шагнуть через) или F11 (Шагнуть в). Однако, как только вы пытаетесь выполнить более сложное действие — например, кликнуть мышью в окне модуля, выделить переменную и нажать Shift+F9 для вычисления ее значения, или открыть окно «Табло» — отладка аварийно завершается.
Первым делом важно локализовать проблему. В описанном случае было выяснено, что ошибка воспроизводится даже на совершенно новом, пустом мобильном приложении с одной кнопкой. Это указывает на то, что проблема кроется не в коде конкретной конфигурации, а глубже — на уровне взаимодействия платформы 1С, мобильного клиента и инструментов отладки.
Проанализируем ключевые моменты, которые помогают понять корень проблемы:
Таким образом, мы имеем дело с платформенной ошибкой, а не с ошибкой в прикладном коде.
Самый надежный и проверенный способ решить данную проблему — использовать для разработки и отладки более раннюю, стабильную версию платформы 1С:Предприятие. В ходе обсуждения было установлено, что платформа версии 8.3.16 лишена этой ошибки.
Пошаговый план действий:
После перехода на версию 8.3.16 отладка должна заработать в штатном режиме, включая вычисление выражений, работу с табло и другие интерактивные возможности. Как отметил автор темы, после этих действий отладка «работает как по маслу».
Важный совет: для разработки и отладки удобно использовать стабильную версию 8.3.16, а для финальной сборки и публикации приложения в магазины (когда интерактивная отладка уже не так важна) можно переключаться на более свежие версии, например, 8.3.18 или новее, если они требуются для использования новых возможностей платформы.
Компания «1С» признала наличие данной ошибки и выпустила исправление. Согласно официальному ответу службы технической поддержки, проблема была устранена в мобильной платформе версии 8.3.19.56.
Однако, как показывает практика и отзывы других разработчиков, установка этой «исправленной» версии не всегда гарантирует 100% решение проблемы. В некоторых случаях падения отладчика при просмотре значений переменных продолжаются. Это может быть связано с конкретной комбинацией версии ОС Android, аппаратного обеспечения устройства или другими факторами.
Поэтому, если вы столкнулись с этой ошибкой, рекомендуется сначала попробовать обновиться до последней версии платформы 8.3.19 или более новой. Если проблема останется, тогда уже прибегать к откату на 8.3.16 как к гарантированному решению.
Помимо проблем с версиями платформы, на стабильность отладки мобильных приложений могут влиять и другие факторы. Рассмотрим, что еще можно предпринять для минимизации сбоев.
Посмотрим на пример. Вместо того чтобы пытаться поймать значение переменной МоиДанные в отладчике, вы можете записать его в журнал:
Процедура ПриНажатииНаКнопку()
// ... какой-то код ...
МоиДанные = ПолучитьКакиеТоДанные();
// Вместо точки останова используем логирование
ЗаписьЖурналаРегистрации("МояОтладка.Кнопка",
УровеньЖурналаРегистрации.Информация,
,
"Значение переменной 'МоиДанные': " + МоиДанные);
// ... продолжение кода ...
КонецПроцедуры
Просмотреть эти записи потом можно будет в журнале регистрации. Этот метод не вызывает сбоев и позволяет анализировать выполнение кода постфактум, что незаменимо при поиске «плавающих» ошибок.
Подводя итог, можно сказать, что сбой отладчика при работе с мобильными приложениями на версиях 8.3.18 и 8.3.19 — это известная платформенная ошибка. Наиболее эффективным решением является использование версии 8.3.16 для этапа активной разработки, а также применение дополнительных мер по стабилизации соединения и настроек ОС Android.