Как исправить ошибки при сборке мобильного приложения 1С: OpenHelp, синхронные вызовы и настройка IIS

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

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

Анализ ошибки Процедура или функция не определена (OpenHelp)

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

Выясним причину: мобильная платформа 1С спроектирована как облегченная версия основной платформы. Функционал вызова контекстной справки Windows-формата (.chm или аналоги) в ней не реализован. Поэтому, когда сборщик встречает упоминание этой процедуры, он не может найти ее определение.

Чтобы решить эту проблему, нам необходимо использовать инструкции препроцессора. Это позволит «скрыть» проблемный код от компилятора мобильного приложения, сохранив его работоспособность для тонкого или толстого клиента. Рассмотрим, как должен выглядеть исправленный код в МодулеУправляемогоПриложения:


#Если Не МобильноеПриложениеКлиент И Не МобильноеПриложениеСервер Тогда
    Если Не ServiceServer.IsApplicationConfigured() И Не UserResult.NeedRestart Тогда
        OpenHelp("Configuration");
    КонецЕсли;
#КонецЕсли

Таким образом, мы указываем системе: «Выполняй этот блок кода только в том случае, если приложение НЕ является мобильным». Это стандартная практика при разработке кроссплатформенных решений в 1С.

Отказ от синхронных вызовов: Переход на НачатьЗапускПриложения

Следующий критический момент связан с использованием метода ЗапуститьПриложение. В современных версиях мобильной платформы (начиная с 8.3.15 и выше) использование синхронных методов, блокирующих интерфейс, запрещено на уровне ядра. Попытка выполнить ЗапуститьПриложение приведет к ошибке: "Использование синхронных вызовов в данной среде запрещено".

Разберем по шагам, как перевести код на асинхронные рельсы:

1. Вместо прямой команды запуска мы должны использовать метод НачатьЗапускПриложения.

2. Нам потребуется создать объект ОписаниеОповещения, который укажет системе, какую процедуру нужно выполнить после того, как внешнее приложение будет запущено (или закроется).

Проанализируем пример изменения кода для открытия файла PDF:


&НаКлиенте
Процедура ОткрытьФайлТрубопровода(Элемент)
    
    // Описываем процедуру, которая будет вызвана после завершения
    Оповещение = Новый ОписаниеОповещения("ПослеЗапускаПриложения", ЭтотОбъект);
    
    // Внимание: путь к файлу на мобильном устройстве отличается от Windows!
    ПутьКФайлу = "file:///sdcard/Documents/instruction.pdf"; 
    
    НачатьЗапускПриложения(Оповещение, ПутьКФайлу);
    
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗапускаПриложения(КодВозврата, ДополнительныеПараметры) Экспорт
    // Здесь можно обработать результат запуска, если это необходимо
КонецПроцедуры

Важное замечание по файловым путям: в сообщении пользователя упоминается путь C:\Users\Admin\.... Помните, что в Android нет диска C:. Для работы с файлами на мобильном устройстве необходимо либо использовать временное хранилище, либо обращаться к локальным папкам устройства через методы ФайловаяСистема.ПутьКДокументам().

Проблемы сетевой доступности: Настройка IIS и Брандмауэра

Если ваше приложение успешно собрано, но мобильный клиент не может подключиться к базе, хотя с компьютера по IP-адресу все заходит, проблему следует искать в сетевых настройках. Рассмотрим основные шаги проверки:

  1. Единая сеть Wi-Fi: Убедитесь, что ваш компьютер (сервер IIS) и телефон находятся в одной подсети. Телефон должен быть подключен к Wi-Fi того же роутера, к которому подключен компьютер. Использование мобильного интернета (4G/5G) без настройки проброса портов или VPN работать не будет.
  2. Настройка Брандмауэра (Firewall): Даже если порт 180 открыт в IIS, Windows может блокировать входящие соединения. Вам необходимо создать "Правило для входящих подключений" в брандмауэре Windows, разрешив трафик по порту 180 (TCP).
  3. Настройки Android 9+ и HTTP: Современные версии Android запрещают передачу данных по незащищенному протоколу HTTP. Если вы используете http://, а не https://, вам нужно в конфигурации "Сборщик мобильных приложений" найти настройки манифеста и разрешить использование "Cleartext traffic" (незащищенного трафика).

Методика работы со Сборщиком мобильных приложений

Часто новички путают назначение самой конфигурации "Сборщик мобильных приложений". Важно понимать: сборщик — это инструмент, а не само приложение.

Проанализируем правильный алгоритм действий:

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

Режим отладки без сборки APK

Чтобы каждый раз не тратить время на сборку нового файла .apk при изменении одной строчки кода, мы рекомендуем использовать Мобильную платформу разработчика. Это специальное приложение от 1С (его можно найти в дистрибутиве мобильной платформы), которое устанавливается на телефон один раз.

В этом приложении вы просто добавляете новую базу, указывая URL-адрес вашей публикации на IIS (например, http://192.168.88.224:180/MyBase). Платформа сама загрузит все изменения конфигурации «на лету» при каждом запуске. Это значительно ускоряет процесс поиска и исправления синтаксических ошибок в модуле управляемого приложения.

Подводя итог, при разработке мобильного приложения на 1С всегда помните о трех столпах успеха: строгая проверка кода на соответствие мобильной платформе через Инструменты - Проверка конфигурации (с галочкой "Мобильное приложение-клиент"), использование асинхронных методов для взаимодействия с системой и правильная настройка сетевых прав доступа в IIS и Windows Firewall.

← На главную