Как адаптировать интерфейс 1С и программно определить тип устройства при работе через мобильный браузер?

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

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

Интерфейс «Такси» в мобильном браузере: мифы и реальность

Рассмотрим ситуацию, когда пользователь заходит в опубликованную базу через Chrome или Safari на смартфоне. Распространенное заблуждение заключается в том, что включение свойства конфигурации Назначение использования: мобильное устройство магическим образом изменит интерфейс на упрощенный или вернет его к стилистике 1С 8.2.

Проанализируем, как это работает на самом деле. Интерфейс «Такси» является адаптивным по своей природе. Если вы открываете базу в веб-клиенте, платформа старается отобразить формы максимально корректно. Однако свойство Назначение использования в свойствах конфигурации предназначено прежде всего для контроля синтаксиса. Если оно установлено, конфигуратор будет выдавать ошибки при попытке использовать объекты, которые физически не поддерживаются мобильной платформой (например, сложные планы счетов или специфические настройки СКД).

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

Определение типа устройства по разрешению экрана

Часто возникает задача: если человек зашел с телефона, нужно скрыть лишние колонки в списке или убрать второстепенные реквизиты, чтобы освободить место. Выясним, как это реализовать программно. Один из надежных способов — анализ параметров экрана через функцию ПолучитьИнформациюЭкрановКлиента().

Разберем пример кода, который позволяет определить, является ли устройство мобильным (или ТСД) на основе разрешения экрана:


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ЭтоМобильныйДоступ = Ложь;
    Экраны = ПолучитьИнформациюЭкрановКлиента();
    
    Для Каждого Экран Из Экраны Цикл
        // Проверяем ширину и высоту. Если одна из сторон меньше 800 пикселей, 
        // скорее всего, это мобильное устройство или терминал сбора данных.
        Если (Экран.Высота < 600 И Экран.Ширина < 800) ИЛИ (Экран.Высота < 800 И Экран.Ширина < 600) Тогда
            Режим = РежимОсновногоОкнаКлиентскогоПриложения.ПолноэкранноеРабочееМесто;
            КлиентскоеПриложение.УстановитьРежимОсновногоОкна(Режим);
            ЭтоМобильныйДоступ = Истина;
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    Если ЭтоМобильныйДоступ Тогда
        // Здесь мы можем изменить видимость элементов формы
        Элементы.ГруппаПодробности.Видимость = Ложь;
    КонецЕсли;
КонецПроцедуры

Этот метод хорош тем, что он работает непосредственно в Веб-клиенте. Однако стоит помнить, что современные смартфоны имеют очень высокое разрешение (Retina, 4K), и платформа может возвращать логические пиксели или физические в зависимости от настроек браузера. Поэтому данный подход лучше комбинировать с другими проверками.

Использование системной информации и типов платформ

Для более точного определения среды выполнения в 1С предусмотрены встроенные средства. Рассмотрим, какие методы помогут нам отличить компьютер от смартфона более элегантно. С помощью функции ПолучитьИнформациюСистемы() мы можем получить доступ к свойству ТипПлатформы.

Проанализируем следующие возможности:

  1. Проверка через директивы компиляции: Директива #Если ВебКлиент сработает и на ПК, и на мобильном, поэтому она не подходит для разделения логики «телефон/компьютер».
  2. Проверка типа ОС: Мы можем проверить значение системной информации. Если платформа возвращает ТипПлатформы.Android или ТипПлатформы.iOS, мы однозначно имеем дело с мобильным устройством.

Пример расширенной проверки:


Инфо = ПолучитьИнформациюСистемы();
Если Инфо.ТипПлатформы = ТипПлатформы.Android 
   Или Инфо.ТипПлатформы = ТипПлатформы.iOS Тогда
    // Логика для мобильного браузера или мобильного приложения
КонецЕсли;

Различия между Веб-клиентом, Мобильным приложением и Мобильным клиентом

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

Практические советы по верстке мобильных форм

Вместо того чтобы писать сотни строк кода для скрытия элементов, разберем, как использовать встроенные возможности платформы для адаптивности:

  1. Свойство «Группировка»: Для групп элементов на форме устанавливайте значение Если помещается. В этом случае на широком экране элементы будут стоять в ряд, а на узком экране смартфона платформа сама перестроит их в колонку.
  2. Вариант управления интерфейсом: В свойствах конфигурации (начиная с 8.3.12) можно настроить режим, который определяет агрессивность адаптации форм.
  3. Использование компактного режима: Посмотрим на метод ТекущийРежимВариантаИнтерфейсаКлиентскогоПриложения(). Он позволяет программно понять, в каком режиме (обычном или компактном) сейчас находится окно, и подстроить логику вывода данных.

Таким образом, работа с мобильного устройства в 1С — это не только установка одной «галки» в свойствах, а комплексный подход к верстке форм и программному определению контекста выполнения. Используя сочетание проверки разрешения экрана и анализ типа платформы, вы сможете создать интерфейс, который будет одинаково удобен как на 27-дюймовом мониторе, так и на 5-дюймовом смартфоне.

← На главную