Разработка мобильных приложений на платформе 1С:Предприятие накладывает определенные ограничения на кастомизацию интерфейса. Одной из наиболее частых проблем, с которыми сталкиваются разработчики при создании приложений для публичного использования (например, терминалы сбора отзывов, киоски самообслуживания или «книги жалоб»), является наличие стандартного командного интерфейса. Пользователь может случайно или намеренно вызвать список информационных баз, зайти в настройки или закрыть приложение, что недопустимо для решений закрытого типа. В этой статье мы подробно разберем, как скрыть лишние элементы управления и заблокировать системные жесты.
Проанализируем самый простой и эффективный способ блокировки интерфейса для мобильных телефонов. Основная идея заключается в том, чтобы перехватить управление в момент старта приложения и открыть рабочую форму в режиме, который перекрывает доступ к остальным элементам системы.
Рассмотрим реализацию в модуле управляемого приложения. Нам необходимо использовать событие ПриНачалеРаботыСистемы. В этом событии мы прописываем открытие нашей основной формы. Если открыть форму модально, платформа автоматически заблокирует доступ к командному интерфейсу (так называемому меню «бутерброд»).
Процедура ПриНачалеРаботыСистемы()
// Указываем путь к нашей основной форме
ОткрытьФорму("ОбщаяФорма.ФормаОбратнойСвязи", , , Истина);
КонецПроцедуры
Важное примечание: На смартфонах этот метод работает идеально — форма открывается на весь экран. Однако на планшетах модальные формы часто отображаются в виде окна в центре экрана, что оставляет системные области видимыми. Поэтому для планшетных версий нам потребуется более изощренный подход.
Выясним, как обойти ограничение отображения окон на планшетах. Опытные разработчики предлагают использовать структуру из двух форм. Мы создаем форму-пустышку, которая служит подложкой, и уже поверх нее открываем рабочую форму. Рассмотрим этот алгоритм пошагово:
ПриНачалеРаботыСистемы открывается обычная (не модальная) форма-пустышка.ПриОткрытии, вызывается открытие основной рабочей формы с установленным свойством БлокироватьВесьИнтерфейс.Проанализируем программный код для реализации этой логики:
// В модуле формы-пустышки
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПараметрыФормы = Новый Структура;
// Открываем рабочую форму, которая перекроет всё
ОткрытьФорму("ОбщаяФорма.РабочаяФорма", ПараметрыФормы, ЭтаФорма, Ложь);
КонецПроцедуры
Хотя этот метод помогает спрятать кнопку меню, на многих версиях Android системный жест (свайп от левого края) все равно может вызвать меню. Для полной изоляции приложения рекомендуется комбинировать этот метод с системными настройками ОС, о которых мы поговорим ниже.
Даже если нам удалось скрыть основное меню, в заголовке формы может остаться стандартная кнопка закрытия. Платформа 1С не всегда позволяет программно отключить её напрямую, но мы можем прибегнуть к хитрости. Разберем, как подменить стандартную команду закрытия.
Для этого в редакторе формы выполним следующие действия:
СкрытаяКнопкаЗакрытия.Закрыть.Ложь.На многих версиях платформы наличие пользовательской команды закрытия (даже скрытой) заставляет систему скрыть стандартную кнопку в заголовке окна. Также не забудьте установить свойства формы: АвтоЗаголовок = Ложь и Заголовок = "" (пустая строка). Это максимально сузит верхнюю панель управления.
Посмотрим на настройки свойств формы в конфигураторе. Одним из ключевых инструментов является свойство окна РежимОболочки или программная установка режима блокировки. Если в конфигураторе у формы установить свойство Режим использования окна в значение Блокировать весь интерфейс, платформа попытается максимально ограничить взаимодействие с внешними элементами.
Однако помните, что при использовании этого режима форма обязана иметь механизмы завершения работы, иначе пользователь окажется в «ловушке». В коде закрытия формы обязательно добавьте принудительное завершение работы приложения:
&НаКлиенте
Процедура ПослеЗакрытияРабочейФормы(Результат, ДополнительныеПараметры)
ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры
Если программные методы 1С не обеспечивают 100% защиты от свайпов (что часто случается на планшетах с новыми версиями Android и iOS), проанализируем возможности самих устройств. Для профессиональных решений это считается «золотым стандартом».
Для Android: Используйте функцию «Закрепление приложения» (Screen Pinning). Она позволяет зафиксировать экран на одном приложении, блокируя все системные жесты, уведомления и кнопку «Домой». Чтобы выйти из этого режима, требуется ввести PIN-код. Также существуют специализированные приложения-лаунчеры (Kiosk Mode), которые полностью заменяют рабочий стол Android на интерфейс вашего приложения 1С.
Для iOS (iPad): Используйте режим «Гид-доступ» (Guided Access). Он включается в настройках универсального доступа. Этот режим позволяет не только заблокировать выход из приложения 1С, но и физически отключить реакцию на нажатия в определенных областях экрана (например, там, где вылезает системное меню).
Рассмотрим продвинутый метод для опытных разработчиков. Если стандартные формы 1С не позволяют добиться нужного визуального эффекта, можно использовать Поле HTML-документа, растянутое на весь экран.
В этом случае весь интерфейс отрисовывается с помощью HTML/CSS, а взаимодействие с данными 1С происходит через событие ПриНажатии или через объект средствами взаимодействия с JS. Поскольку фокус ввода находится внутри HTML-контейнера, системные жесты платформы 1С обрабатываются иначе, и шанс случайного вызова «бутерброда» значительно снижается.
Подводя итог, можно сказать, что идеального «переключателя» одной кнопкой в 1С для этой задачи не существует. Наилучший результат дает комбинация подходов:
ПриНачалеРаботыСистемы с блокировкой интерфейса.Именно такой комплексный подход позволит вам создать надежное приложение для киоска или терминала самообслуживания, которое будет выглядеть как нативное мобильное решение без лишних элементов платформы 1С.