Почему не открывается документ из динамического списка в мобильном приложении 1С и как решить ошибки сборки

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Разработка под мобильную платформу 1С:Предприятие имеет множество нюансов, связанных как с поведением интерфейса на различных версиях Android, так и со спецификой сборки мобильного приложения (APK). В этой статье мы подробно разберем ситуацию, когда при нажатии на строку в списке документов ничего не происходит, а также проанализируем типичные ошибки компиляции, возникающие при использовании современных Android SDK.

Разбор проблемы: отсутствие реакции на нажатие в списке

Рассмотрим ситуацию: у нас есть корректно работающее мобильное приложение, которое было пересобрано на более новой версии платформы (например, переход с 8.3.10 на 8.3.14 или 8.3.18). После обновления пользователи замечают, что при открытии списка документов и попытке выбора конкретного объекта форма документа не открывается, хотя строка выделяется цветом. Проанализируем, почему это происходит.

В мобильной платформе 1С логика открытия формы из динамического списка тесно завязана на состав командной панели. Выясним основную причину: действие "Выбор" (одинарный или двойной тап по строке) по умолчанию сопоставлено со стандартной командой Изменить. Если в свойствах формы списка эта команда не включена в состав отображаемых команд или явно удалена, платформа "теряет" обработчик по умолчанию для открытия формы.

Для решения этой проблемы выполним следующие шаги:

  1. Откроем конфигуратор и перейдем в форму списка документов, которая ведет себя некорректно.
  2. В окне свойств элемента формы Список (динамический список) проверим значение свойства ИспользованиеТекущейСтроки. Обычно оно установлено в Авто.
  3. Перейдем в командную панель формы. Убедимся, что стандартная команда Изменить (или ИзменитьОбъект) присутствует в составе команд.
  4. Важный нюанс: как показывает практика, если добавить команду Изменить в состав видимых кнопок, механизм открытия формы по клику начинает работать автоматически. Это особенность мобильного клиента и мобильного приложения: 1С интерпретирует "открытие для просмотра/редактирования" именно через вызов этой команды.

Если нам не нужно отображать кнопку "Изменить" на экране, но мы хотим сохранить функционал открытия, можно попробовать программно назначить действие в обработчике Выбор:


&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ПараметрыФормы = Новый Структура("Ключ", ВыбраннаяСтрока);
    ОткрытьФорму("Документ.НазваниеВашегоДокумента.ФормаОбъекта", ПараметрыФормы, Элемент);
КонецПроцедуры

Проблема сборки: ошибки Gradle и Connection timed out

При попытке собрать обновленное приложение мы часто сталкиваемся с ошибками в логе сборщика, связанными с невозможностью скачать зависимости. Например, сообщения вида Could not resolve com.google.android.gms:play-services-iid или Connect to dl.google.com:443 failed: Connection timed out.

Проанализируем ситуацию: современный процесс сборки мобильного приложения 1С использует инструмент Gradle, который во время компиляции обращается к внешним репозиториям (Google Maven, JCenter) для загрузки необходимых библиотек (Firebase, сервисы Google Play и т.д.). В условиях сетевых ограничений или блокировок со стороны зарубежных ресурсов эти запросы завершаются ошибкой по таймауту.

Рассмотрим способы обхода этой проблемы:

  1. Использование прокси-сервера или VPN: Это самый надежный метод. Если на компьютере, где запущен конфигуратор (или сборщик), настроен системный VPN, Gradle сможет получить доступ к dl.google.com.
  2. Настройка gradle.properties: Мы можем явно указать настройки прокси для Gradle. Для этого в папке пользователя (обычно C:\Users\ИмяПользователя\.gradle\) нужно создать или отредактировать файл gradle.properties, добавив туда следующие строки:

systemProp.http.proxyHost=ваш_адрес_прокси
systemProp.http.proxyPort=ваш_порт
systemProp.https.proxyHost=ваш_адрес_прокси
systemProp.https.proxyPort=ваш_порт

Также важно помнить, что начиная с версии мобильной платформы 8.3.18.61, компания 1С рекомендует использовать JDK 11 (например, Liberica JDK Full). Использование устаревшей JDK 8 с новыми версиями Android SDK (API 31 и выше) часто приводит к непредсказуемым ошибкам в процессе слияния ресурсов (mergeResources).

Ошибка "Не поддерживает использование разрешений"

Еще одна часто встречающаяся ошибка при сборке на новых платформах звучит так: Используемая версия мобильной платформы не поддерживает использование разрешений в мобильной конфигурации. Это происходит, когда в свойствах корневого узла конфигурации выбраны права, которые появились в экосистеме Android (и, соответственно, в 1С) позже, чем была выпущена используемая вами версия мобильной платформы.

Разберем алгоритм исправления:

  1. В дереве конфигурации нажмите правой кнопкой мыши на корень (название вашей конфигурации) и выберите "Свойства".
  2. Найдите раздел Сеанс мобильного приложения и пункт Использовать разрешения.
  3. Нажмите кнопку выбора (...) и внимательно просмотрите список. Если вы используете старую платформу (например, 8.3.14), отключите новые разрешения, такие как Реклама, Биометрия или специфические параметры геолокации в фоновом режиме.
  4. Попробуйте повторить сборку. Ошибка должна исчезнуть.

Рекомендации по отладке интерфейса

Чтобы не тратить время на постоянную сборку APK для проверки каждой мелочи, воспользуемся проверенным методом: запуском мобильного приложения в режиме обычного клиента на десктопе. Большинство проблем с логикой динамических списков воспроизводятся и на ПК.

Проанализируем преимущества этого подхода:

В завершение отметим, что стабильная работа мобильного приложения на Android 9+ требует комплексного подхода: актуальной версии JDK, правильно настроенных прав в конфигурации и обязательного наличия стандартных команд управления в формах списков. Рассмотрим эти аспекты как фундамент, на котором строится разработка современных мобильных решений на платформе 1С.

← На главную