При разработке и сборке собственного мобильного клиента для типовых конфигураций, таких как УТ 11, разработчики часто сталкиваются с неприятной ситуацией: вместо привычного плиточного или компактного интерфейса, который мы видим в официальных приложениях из Google Play или App Store, на экране смартфона открывается обычное десктопное окно. Элементы становятся мелкими, навигация — неудобной, а автоматическая компоновка форм, обещанная платформой, кажется, не работает.
В этой статье мы подробно разберем, почему мобильный клиент может игнорировать мобильный форм-фактор, и пошагово рассмотрим методы адаптации интерфейса, чтобы ваше приложение работало так же удобно, как и типовое.
Первым делом проанализируем настройки самой конфигурации. Одной из самых распространенных причин «десктопного» поведения является установленный режим совместимости. Платформа 1С:Предприятие реализует механизмы автоматической трансформации форм начиная с определенных версий. Если в вашей конфигурации установлен режим совместимости ниже 8.3.13, мобильный клиент может просто не включать логику адаптивной верстки.
Проверим это в свойствах корня конфигурации. Для полноценной работы современных механизмов мобильного клиента рекомендуется использовать актуальный режим совместимости. Если режим совместимости слишком старый, платформа пытается отрисовать форму «как есть», что на маленьком экране выглядит как уменьшенная копия настольной версии.
Рассмотрим механизм, который платформа использует для перестроения интерфейса. В мобильном клиенте действует принцип одной колонки. Все элементы формы выстраиваются друг под другом. Однако, если элементов слишком много, платформа не всегда может корректно решить, что оставить, а что скрыть.
Разберем, как мы можем повлиять на этот процесс через свойства элементов формы:
Важность (Высокая, Обычная, Низкая). Платформа использует этот параметр, чтобы решить, какие элементы отображать в первую очередь, а какие можно скрыть в подменю или вовсе не выводить на узкий экран. Пройдемся по ключевым формам и установим «Высокую» важность для самых необходимых полей (например, «Номенклатура», «Количество», «Цена»).Проанализируем ситуацию, когда нам нужно радикально изменить форму для мобильного пользователя. В коде модулей формы мы можем использовать специальные директивы. Рассмотрим пример настройки видимости элементов при создании формы на сервере:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Проверяем, является ли текущий клиент мобильным
#Если МобильныйКлиент Тогда
// Скрываем второстепенные элементы, которые загромождают интерфейс
Элементы.ГруппаПодробности.Видимость = Ложь;
Элементы.Спецификация.Видимость = Ложь;
// Оптимизируем командную панель
Элементы.ФормаПечать.Отображение = ОтображениеКнопки.Картинка;
#КонецЕсли
КонецПроцедуры
Такой подход позволяет создавать «облегченные» версии тяжелых десктопных форм, не создавая при этом отдельные объекты в метаданных.
Выясним причину, по которой начальная страница выглядит как на ПК. В мобильном клиенте нет привычного «Рабочего стола» с множеством колонок. Вместо этого используется Начальная страница. Если в вашей конфигурации для рабочего стола не задана специальная форма для мобильного клиента, платформа покажет стандартную.
Посмотрим, как оптимизировать командный интерфейс:
Проанализируем процесс сборки .apk или .ipa файла. Важно понимать разницу между Мобильной платформой (МП) и Мобильным клиентом (МК).
Мобильный клиент — это, по сути, тонкий клиент, оптимизированный под мобильное устройство. При использовании Сборщика убедитесь, что вы выбираете правильный тип приложения. Если вы по ошибке соберете приложение как «Мобильную платформу» с полной конфигурацией, механизмы динамической трансляции форм могут работать иначе, чем в режиме чистого Мобильного клиента.
Также обратите внимание на настройки DPI и разрешения в свойствах сборки. Иногда некорректное определение плотности пикселей заставляет платформу думать, что она запущена на планшете с огромным экраном, и она включает «планшетный» (близкий к десктопному) режим отображения.
В конфигурации УТ 11 (и других современных решениях от 1С) часто зашита логика определения типа клиента. Официальное приложение при подключении к базе передает определенные параметры. В модуле управляемого приложения может стоять проверка:
Процедура ПриНачалеРаботыСистемы()
#Если МобильныйКлиент Тогда
// Специальные настройки для мобильного устройства
КлиентскиеНастройки.УстановитьИнтерфейсДляТачУстройств();
#КонецЕсли
КонецПроцедуры
Если вы используете самосборный клиент, убедитесь, что сервер «узнает» его как мобильное устройство. Попробуйте в параметрах запуска (в сборщике) явно указать режим отображения или проверить, не срабатывают ли в конфигурации функциональные опции, ограничивающие мобильный функционал для неопознанных приложений.
Чтобы добиться «мобильного» вида интерфейса, выполните следующие шаги:
#Если МобильныйКлиент.Таким образом, сочетание автоматических механизмов платформы и ручной настройки видимости позволит вам получить интерфейс, который будет выглядеть профессионально и удобно на любом смартфоне.