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

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

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

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

Способ 1. Использование функциональных опций и параметров сеанса

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

Разберем реализацию по шагам:

  1. Создадим Параметр сеанса, например, ЭтоМобильныйКлиент с типом Булево.
  2. В модуле сеанса пропишем логику определения типа клиента. Используем функцию ПредставлениеПриложения() или системное перечисление ТипКлиентскогоПриложения.

Пример кода в модуле сеанса:


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

Далее создадим Функциональную опцию. В качестве источника данных укажем наш параметр сеанса ЭтоМобильныйКлиент. В состав опции включим все объекты, которые должны быть видны в мобильном клиенте. Если же мы хотим наоборот — скрывать объекты, то логику параметра нужно инвертировать (например, параметр ПолнофункциональныйРежим).

Важно: функциональные опции позволяют скрывать целые подсистемы, команды и реквизиты форм. Это позволяет «схлопнуть» интерфейс до минимума без изменения ролей пользователя.

Способ 2. Программное управление настройками интерфейса (8.3.15+)

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

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


&НаКлиенте
Процедура ПриНачалеРаботыСистемы()
    
    #Если МобильныйКлиент Тогда
        
        // Получаем текущие настройки интерфейса
        Настройки = РабочееМестоКлиентскогоПриложения.ПолучитьНастройкиИнтерфейса();
        
        // Очищаем состав панелей
        Настройки.СоставПанелей.Верхняя.Очистить();
        Настройки.СоставПанелей.Левая.Очистить();
        Настройки.СоставПанелей.Правая.Очистить();
        Настройки.СоставПанелей.Нижняя.Очистить();
        
        // Применяем настройки только для текущего сеанса
        РабочееМестоКлиентскогоПриложения.УстановитьНастройкиИнтерфейса(Настройки);
        
        // Открываем основную рабочую форму
        ОткрытьФорму("Обработка.РабочееМестоКурьера.Форма.ФормаМобильная");
        
    #КонецЕсли
    
КонецПроцедуры

Такой подход позволяет оставить пользователя в пустом рабочем пространстве, где отображается только вызванная вами форма. Это имитирует режим «Киоска», который штатно в мобильном клиенте не всегда отрабатывает ожидаемо.

Способ 3. Использование свойств формы для мобильных устройств

Если ваша цель — не скрыть всё приложение, а адаптировать конкретную форму, выясним, какие инструменты есть в редакторе форм. У каждого элемента формы и у самой формы есть свойства видимости, зависящие от типа клиента.

Рассмотрим, как это настроить:

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

Способ 4. Динамическое открытие формы в режиме «Исключительное»

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

При запуске системы используем следующий код:


ПараметрыОткрытия = Новый Структура;
ВариантОткрытия = ВариантОткрытияОкна.Исключительное;
ОткрытьФорму("ОбщаяФорма.МобильноеРабочееМесто", ПараметрыОткрытия, , , , , , ВариантОткрытия);

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

Способ 5. Разделение через параметры запуска

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

Решением может стать использование Параметра запуска (ключ /C в строке подключения). В настройках подключения мобильного клиента в поле «Дополнительные параметры запуска» можно указать, например, SimpleMode.

Затем в коде ПриНачалеРаботыСистемы мы считываем это значение:


Если ПараметрЗапуска = "SimpleMode" Тогда
    // Принудительно скрываем интерфейс и открываем одну форму
КонецЕсли;

Резюме и рекомендации

Мы рассмотрели несколько методов управления интерфейсом. Выбор конкретного способа зависит от ваших задач:

  1. Для глобального скрытия объектов во всей конфигурации лучше всего подходят Функциональные опции.
  2. Для быстрой очистки экрана от «лишних» панелей используйте НастройкиИнтерфейсаКлиентскогоПриложения.
  3. Для тонкой настройки элементов внутри одной формы используйте Свойства видимости элементов в конфигураторе.

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

← На главную