При разработке мобильных решений на платформе 1С:Предприятие часто возникает вопрос: как сделать работу пользователя в обычном браузере смартфона удобной? Программисты сталкиваются с тем, что стандартный интерфейс «Такси», отлично работающий на мониторах ПК, требует адаптации под маленькие экраны. В этой статье мы разберем, как платформа ведет себя в мобильном веб-клиенте, для чего нужны свойства конфигурации и как программно «узнать» устройство пользователя, чтобы динамически изменить форму.
Рассмотрим ситуацию, когда пользователь заходит в опубликованную базу через Chrome или Safari на смартфоне. Распространенное заблуждение заключается в том, что включение свойства конфигурации Назначение использования: мобильное устройство магическим образом изменит интерфейс на упрощенный или вернет его к стилистике 1С 8.2.
Проанализируем, как это работает на самом деле. Интерфейс «Такси» является адаптивным по своей природе. Если вы открываете базу в веб-клиенте, платформа старается отобразить формы максимально корректно. Однако свойство Назначение использования в свойствах конфигурации предназначено прежде всего для контроля синтаксиса. Если оно установлено, конфигуратор будет выдавать ошибки при попытке использовать объекты, которые физически не поддерживаются мобильной платформой (например, сложные планы счетов или специфические настройки СКД).
Важный момент: установка этой галки не меняет визуальные «бантики» интерфейса в браузере. Она лишь помогает разработчику не допустить использование недопустимых методов в коде, который может быть запущен на мобильном устройстве.
Часто возникает задача: если человек зашел с телефона, нужно скрыть лишние колонки в списке или убрать второстепенные реквизиты, чтобы освободить место. Выясним, как это реализовать программно. Один из надежных способов — анализ параметров экрана через функцию ПолучитьИнформациюЭкрановКлиента().
Разберем пример кода, который позволяет определить, является ли устройство мобильным (или ТСД) на основе разрешения экрана:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ЭтоМобильныйДоступ = Ложь;
Экраны = ПолучитьИнформациюЭкрановКлиента();
Для Каждого Экран Из Экраны Цикл
// Проверяем ширину и высоту. Если одна из сторон меньше 800 пикселей,
// скорее всего, это мобильное устройство или терминал сбора данных.
Если (Экран.Высота < 600 И Экран.Ширина < 800) ИЛИ (Экран.Высота < 800 И Экран.Ширина < 600) Тогда
Режим = РежимОсновногоОкнаКлиентскогоПриложения.ПолноэкранноеРабочееМесто;
КлиентскоеПриложение.УстановитьРежимОсновногоОкна(Режим);
ЭтоМобильныйДоступ = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если ЭтоМобильныйДоступ Тогда
// Здесь мы можем изменить видимость элементов формы
Элементы.ГруппаПодробности.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
Этот метод хорош тем, что он работает непосредственно в Веб-клиенте. Однако стоит помнить, что современные смартфоны имеют очень высокое разрешение (Retina, 4K), и платформа может возвращать логические пиксели или физические в зависимости от настроек браузера. Поэтому данный подход лучше комбинировать с другими проверками.
Для более точного определения среды выполнения в 1С предусмотрены встроенные средства. Рассмотрим, какие методы помогут нам отличить компьютер от смартфона более элегантно. С помощью функции ПолучитьИнформациюСистемы() мы можем получить доступ к свойству ТипПлатформы.
Проанализируем следующие возможности:
#Если ВебКлиент сработает и на ПК, и на мобильном, поэтому она не подходит для разделения логики «телефон/компьютер».ТипПлатформы.Android или ТипПлатформы.iOS, мы однозначно имеем дело с мобильным устройством.Пример расширенной проверки:
Инфо = ПолучитьИнформациюСистемы();
Если Инфо.ТипПлатформы = ТипПлатформы.Android
Или Инфо.ТипПлатформы = ТипПлатформы.iOS Тогда
// Логика для мобильного браузера или мобильного приложения
КонецЕсли;
Чтобы эффективно разрабатывать интерфейсы, нужно четко понимать разницу в способах доступа, так как от этого зависит доступный функционал:
Вместо того чтобы писать сотни строк кода для скрытия элементов, разберем, как использовать встроенные возможности платформы для адаптивности:
Если помещается. В этом случае на широком экране элементы будут стоять в ряд, а на узком экране смартфона платформа сама перестроит их в колонку.ТекущийРежимВариантаИнтерфейсаКлиентскогоПриложения(). Он позволяет программно понять, в каком режиме (обычном или компактном) сейчас находится окно, и подстроить логику вывода данных.Таким образом, работа с мобильного устройства в 1С — это не только установка одной «галки» в свойствах, а комплексный подход к верстке форм и программному определению контекста выполнения. Используя сочетание проверки разрешения экрана и анализ типа платформы, вы сможете создать интерфейс, который будет одинаково удобен как на 27-дюймовом мониторе, так и на 5-дюймовом смартфоне.