Почему мобильная форма 1С отображается как стандартная форма для ПК и как это исправить?

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

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

Понимание проблемы: форма для мобильного клиента vs. форма для ПК

Когда мы создаем форму в конфигураторе 1С и указываем, что она предназначена для мобильного клиента, мы ожидаем, что именно она будет использоваться при работе через мобильное приложение. Однако платформа не всегда автоматически выбирает нужную форму. Основная причина кроется в том, как 1С определяет тип клиентского приложения, и в том, какая форма установлена в качестве основной или выбрана по умолчанию.

Для начала, давайте проясним ключевое различие, которое часто вводит в заблуждение разработчиков:

  1. Мобильный клиент: Это специализированное приложение 1С:Предприятие, устанавливаемое на мобильное устройство (Android, iOS). Оно работает как "тонкий клиент", подключаясь к информационной базе, опубликованной на веб-сервере. Данные вводятся и сразу сохраняются в общей базе. Именно для этого типа клиента предназначены формы, разработанные как "формы для мобильного клиента".
  2. Мобильное приложение (автономное): Это полностью самостоятельное приложение, которое включает в себя мобильную платформу и файловую информационную базу. Оно может работать без постоянного подключения к интернету. Для таких приложений формы также адаптируются, но механизм их работы и публикации иной.
  3. Веб-клиент на мобильном устройстве: Это обычный веб-клиент, открытый в браузере мобильного устройства. Хотя он открыт на телефоне, 1С воспринимает его как обычный веб-клиент, а не как "мобильный клиент" в своем понимании. Соответственно, в этом случае будут отображаться стандартные формы для веб-клиента, а не специализированные мобильные.

Если вы открываете вашу конфигурацию через веб-браузер на мобильном телефоне, платформа будет считать, что это веб-клиент, и, следовательно, использовать формы, предназначенные для веб-клиента (обычные управляемые формы для ПК).

Решение 1: Программное управление выбором формы

Наиболее гибкий и рекомендуемый способ обеспечить отображение нужной формы — это использовать событие ОбработкаПолученияФормы в модуле менеджера объекта. Это событие позволяет нам программно указать, какую именно форму следует открыть в зависимости от текущего типа клиентского приложения.

Рассмотрим, как это можно реализовать. Предположим, у вас есть документ (или любой другой объект), для которого вы создали две формы: одна стандартная (например, ФормаОбъекта) и одна мобильная (например, ФормаДокументаМобильная или Форма1, как в примере из сообщения). Наша задача — принудительно открывать мобильную форму, если приложение запущено на мобильном клиенте.

Шаг 1: Добавление кода в модуль менеджера объекта

Откройте конфигуратор, найдите нужный объект (например, документ) и перейдите в его модуль менеджера. Добавьте следующий код:


Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)

    Если КлиентскоеПриложение.ТипПриложения = ТипКлиентскогоПриложения.МобильныйКлиент Тогда
        // Здесь мы проверяем, является ли текущее приложение Мобильным клиентом
        
        Если ВидФормы = "ФормаОбъекта" Тогда
            // Если запрашивается стандартная форма объекта,
            // мы подменяем ее на нашу мобильную форму.
            ВыбраннаяФорма = "ФормаДокументаМобильная"; // Или "Форма1", если вы так назвали свою мобильную форму
            СтандартнаяОбработка = Ложь; // Важно установить в Ложь, чтобы предотвратить стандартную обработку
        КонецЕсли;
        
    ИначеЕсли КлиентскоеПриложение.ТипПриложения = ТипКлиентскогоПриложения.МобильноеПриложениеКлиент Тогда
        // Если это автономное мобильное приложение (например, для мобильной платформы)
        // Возможно, здесь также потребуется своя логика или другая форма
        Если ВидФормы = "ФормаОбъекта" Тогда
            ВыбраннаяФорма = "ФормаМобильногоПриложения"; 
            СтандартнаяОбработка = Ложь;
        КонецЕсли;
        
    Иначе
        // Для всех остальных типов клиентов (тонкий клиент, толстый клиент, веб-клиент)
        // оставляем стандартную обработку или указываем форму для ПК
        СтандартнаяОбработка = Истина; // Позволяем платформе выбрать стандартную форму
    КонецЕсли;

КонецПроцедуры

Давайте разберем ключевые моменты этого кода:

  1. Процедура ОбработкаПолученияФормы(...): Эта процедура вызывается платформой каждый раз, когда требуется открыть форму для данного объекта.
  2. КлиентскоеПриложение.ТипПриложения: Это свойство позволяет нам определить, через какой тип клиента запущено приложение. Это критически важно для нашего сценария.
  3. ТипКлиентскогоПриложения.МобильныйКлиент: Если ваше приложение запускается именно как мобильный клиент (отдельное приложение на Android/iOS, подключенное к веб-серверу), то эта ветка кода будет выполнена.
  4. ТипКлиентскогоПриложения.МобильноеПриложениеКлиент: Этот тип используется для автономных мобильных приложений, скомпилированных из мобильной платформы. Если вы работаете именно с таким сценарием, необходимо использовать этот тип. Автор в сообщении 5 уточнил, что использует "клиент", что скорее всего относится к МобильныйКлиент.
  5. ВидФормы = "ФормаОбъекта": Здесь мы проверяем, какая форма была запрошена платформой по умолчанию. Чаще всего для объекта это будет "ФормаОбъекта".
  6. ВыбраннаяФорма = "ФормаДокументаМобильная": Здесь мы указываем имя формы, которую хотим открыть вместо стандартной. Убедитесь, что имя указано точно так же, как оно задано в конфигураторе для вашей мобильной формы.
  7. СтандартнаяОбработка = Ложь: Это очень важный параметр. Установка его в Ложь означает, что мы взяли на себя ответственность за выбор формы, и платформа не должна пытаться найти форму по своим стандартным правилам.

Важный нюанс из обсуждения: Как мы выяснили из сообщений 4, 9 и 11, большая часть проблем возникает из-за путаницы между МобильныйКлиент и другими режимами. Если вы работаете с мобильным приложением (автономной базой), то вам нужно использовать ТипКлиентскогоПриложения.МобильноеПриложениеКлиент. Если же вы открыли базу на мобильном устройстве через обычный веб-браузер, то это не МобильныйКлиент, и для него будут применяться правила для веб-клиента. Формы для "мобильного клиента" будут отображаться только в клиенте типа ТипКлиентскогоПриложения.МобильныйКлиент (отдельное приложение).

Решение 2: Установка мобильной формы как основной

В некоторых случаях, если вы хотите, чтобы мобильная форма была основной для данного объекта при любом запуске на мобильном клиенте, вы можете установить ее как основную форму для мобильного клиента в свойствах самого объекта.

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

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

Особенности разработки и адаптации форм для мобильных решений 1С

Помимо выбора формы, для корректной работы мобильных форм необходимо учитывать ряд рекомендаций по их разработке:

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

Тестирование мобильных форм

Эффективное тестирование — ключ к успешной адаптации:

  1. Предварительный просмотр в конфигураторе: Самый простой способ — использовать встроенный предварительный просмотр. В конфигураторе можно переключиться в мобильный режим и выбрать виртуальное устройство для эмуляции.
  2. Публикация на веб-сервере: Для полноценного тестирования необходимо опубликовать информационную базу на веб-сервере.
  3. Использование эмуляторов: Для более глубокого тестирования можно использовать эмуляторы мобильных устройств, например, в составе Android Studio или Xcode для iOS.
  4. Тестирование на реальных устройствах: Всегда рекомендуется финальное тестирование на реальных мобильных устройствах, чтобы учесть их специфические особенности и производительность.

Настройка доступа к базе через мобильный клиент

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

  1. Развертывание веб-сервера: Установите и настройте веб-сервер (например, Apache или IIS) на компьютере, где доступна ваша информационная база.
  2. Публикация базы на веб-сервере: Через конфигуратор опубликуйте вашу информационную базу на развернутом веб-сервере. Убедитесь, что публикация прошла успешно и база доступна по URL.
  3. Указание пути в мобильном клиенте: В установленном на мобильном устройстве приложении "1С:Предприятие" (мобильный клиент) добавьте новую базу и укажите полный URL к вашей опубликованной базе.
  4. Лицензирование: Помните, что для работы мобильного клиента, как правило, требуется клиентская лицензия 1С. Однако если пользователь не работает одновременно в мобильном клиенте и на компьютере, то дополнительная лицензия может не потребоваться.

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

← На главную