Как открыть формы в мобильном приложении 1С на весь экран на планшетах?

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

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

Анализируем исходную проблему: формы не на весь экран на планшетах

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

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

Первоначальные попытки и их ограничения

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

  1. Программная смена формы в рабочей области начальной страницы. Изначально можно было попытаться установить новую форму АРМ (Автоматизированное Рабочее Место) непосредственно в рабочей области начальной страницы. Однако этот подход имел существенный недостаток: для применения изменений требовался ручной перезапуск приложения. В мобильном приложении 1С программный перезапуск не функционирует так, как в обычном клиенте; доступно только завершение работы приложения, что крайне неудобно для пользователя. Таким образом, от этого варианта пришлось отказаться, так как он создавал значительные неудобства для конечных пользователей.
  2. Закрытие текущей формы и открытие новой. Другая попытка заключалась в программном закрытии текущей открытой формы и последующем открытии новой, при этом иногда устанавливался запрет на ручное закрытие новой формы. Этот метод позволял динамически менять вид рабочего места, но, к сожалению, не решал основную проблему с неполноэкранным открытием на планшетах. Формы все так же отображались в уменьшенном режиме.
  3. Передача параметра "Окно". Были предприняты попытки передавать в параметр Окно метода ОткрытьФорму() значение ОсновноеОкноСистемы, чтобы явно указать, в каком окне должна быть открыта форма. К сожалению, это никак не повлияло на поведение формы, и она по-прежнему открывалась не на весь экран, оставаясь в "модальном" режиме.
  4. Использование различных РежимовОткрытияОкна. Пробовали устанавливать различные значения параметра РежимОткрытияОкна (например, РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс), пытаясь принудительно изменить поведение формы. Но и это не принесло желаемого эффекта; формы продолжали открываться в уменьшенном виде.

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

Понимание специфики поведения на планшетах

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

Отметим, что некоторые разработчики сталкивались с настолько критичной необходимостью изменить это поведение, что даже рассматривали такие радикальные меры, как декомпиляция APK-файла приложения для принудительного определения любого устройства как телефона. Однако это крайне нежелательный и рискованный подход, который мы категорически не рекомендуем, поскольку он выходит за рамки стандартных средств платформы 1С и может привести к непредсказуемым последствиям, таким как нестабильность работы приложения, проблемы с обновлениями и нарушения лицензионных соглашений. Наша цель — найти элегантное и поддерживаемое решение средствами 1С.

Эффективное решение: параметр РежимОткрытияОкнаФормы.БлокироватьОкноВладельца

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

Рассмотрим подробнее, как это работает:

  1. Суть параметра: РежимОткрытияОкнаФормы.БлокироватьОкноВладельца предназначен для открытия формы таким образом, чтобы она блокировала взаимодействие с формой-владельцем. Хотя изначально его цель — создание модальных форм, в контексте мобильного клиента 1С на планшетах он имеет специфический побочный эффект принудительного открытия на весь экран, при условии, что владелец формы указан корректно.
  2. Критическая особенность: Для корректной работы этого режима необходимо обязательно передать ссылку на форму-владельца. Это является ключевым аспектом данного решения. Если владелец не указан, или передана недействительная ссылка (например, Неопределено), то поведение формы может быть аналогично режиму РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс или просто открыться в уменьшенном виде. Таким образом, без явного указания владельца, данный режим не сможет выполнить свою функцию по полноэкранному отображению.

Пример реализации с использованием формы-владельца

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

Вот как это может выглядеть в коде 1С:Предприятия:


// Предположим, этот код выполняется из модуля формы авторизации (или другой стартовой формы),
// которая выступает в роли владельца.
// "ЭтотОбъект" в данном контексте будет ссылкой на саму форму-владельца.

// Определяем параметры для открываемой формы, если они необходимы.
// Например, это может быть структура с ключами и значениями, которые форма должна получить при открытии.
// Если параметров нет, можно передать Неопределено.
ПеременныеПараметрыДляФормы = Новый Структура("КлючНастройкиАРМ", "ЗначениеНастройки");

// Вызываем метод ОткрытьФорму, указывая все необходимые параметры.
// Обратите внимание на 5-й параметр (владелец) и последний (режим открытия окна).
ОткрытьФорму("Обработка.ИмяВашейОбработкиАРМ.Форма.ИмяФормыАРМ", // Имя открываемой формы
             ПеременныеПараметрыДляФормы,                         // Параметры для открываемой формы
             ЭтотОбъект,                                          // *** Важно: передаем ссылку на форму-владельца ***
             ,,,,,                                                // Пропускаем ненужные параметры (имя, элементы и т.д.)
             РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);    // Режим открытия: блокировать владельца

Как мы видим, после применения этого подхода и использования, например, формы авторизации в роли владельца, проблема с неполноэкранным отображением была успешно решена. Формы АРМ стали открываться на весь экран на планшетах, обеспечивая более комфортный и функциональный интерфейс для пользователя. Это подтвержденное решение, которое эффективно работает в реальных проектах.

Важные нюансы и дополнительные наблюдения

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

  1. РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс: Этот режим открывает форму, которая блокирует весь интерфейс приложения, делая другие окна недоступными. Однако, согласно опыту многих разработчиков, он **не гарантирует** полноэкранного отображения на планшетах; форма также может открыться в уменьшенном, центрированном виде. Таким образом, хотя название может звучать обнадеживающе, это не является полноценной заменой для решения с РежимОткрытияОкнаФормы.БлокироватьОкноВладельца, требующего указания владельца.
  2. Зависимость от версии Android и размера экрана: Существуют наблюдения, что поведение открытия форм может отличаться в зависимости от версии операционной системы Android и физического размера экрана устройства. Например, на некоторых терминалах сбора данных (ТСД) с отличной от планшетов версией Android и меньшим экраном, формы всегда открываются на полный экран по умолчанию, без дополнительных настроек. Это подтверждает, что платформа 1С адаптирует поведение интерфейса в зависимости от форм-фактора устройства и его системных характеристик, что может приводить к непредсказуемым различиям на разных моделях.

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

Рекомендации по разработке адаптивного интерфейса

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

  1. Адаптивность форм: Мы должны проектировать формы таким образом, чтобы их элементы корректно масштабировались и располагались на экранах с различными разрешениями и пропорциями. Используйте свойства элементов управления, такие как РастягиватьПоГоризонтали, РастягиватьПоВертикали, АвтоРазмер, ФиксированныйРазмер и настройки группировок, чтобы обеспечить гибкое отображение. Грамотная настройка отступов, привязок и пропорций поможет избежать "наползания" элементов друг на друга или излишнего пустого пространства.
  2. Ориентация экрана: Учитывайте, как форма будет выглядеть при альбомной и портретной ориентации экрана. Хотя платформа 1С часто справляется с этим автоматически, в некоторых случаях может потребоваться дополнительная логика или отдельные макеты для разных ориентаций, чтобы оптимизировать расположение элементов и сделать интерфейс максимально удобным.
  3. Тщательное тестирование: Как уже упоминали, необходимо тщательно тестировать приложение на множестве реальных устройств или эмуляторов, имитирующих планшеты с различными диагоналями и разрешениями, а также телефоны разных размеров. Это позволит выявить потенциальные проблемы с отображением, удобством использования и производительностью на различных платформах.
  4. Масштабирование в ОС: Помните, что настройки масштабирования экрана в самой операционной системе Android также могут влиять на то, как приложение интерпретирует доступное пространство для форм. Пользователи могут изменять эти настройки, и ваше приложение должно быть к этому готово, сохраняя свою читабельность и функциональность.

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

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

← На главную