Как закрепить элементы формы (хедер или футер) при прокрутке в мобильном приложении 1С?

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

Разработка интерфейсов для мобильных устройств на платформе 1С требует особого подхода, так как экранное пространство сильно ограничено, а стандартное поведение форм предполагает автоматическую прокрутку всего содержимого. Часто возникает задача закрепить важные элементы управления (кнопки "Оформить", "Готово", итоговые суммы или навигационные панели) так, чтобы они всегда оставались на виду, в то время как основной контент формы можно было скроллить. В этой статье мы подробно разберем, как реализовать механизм фиксированных зон (Header/Footer) штатными средствами управляемых форм.

Метод 1: Использование структуры «Группа страниц» и управления прокруткой

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

  1. Настройка самой формы: В свойствах управляемой формы (корень дерева элементов) находим свойство ВертикальнаяПрокрутка. Нам необходимо установить его в значение Авто или Не использовать. Это лишит форму возможности скроллить всё содержимое целиком.
  2. Создание Хедера (шапки): Добавим в корень формы Обычная группа. В ней разместим элементы, которые должны быть жестко зафиксированы вверху. Для этой группы свойство РастягиватьПоВертикали должно быть установлено в Ложь.
  3. Создание скроллируемой области: Это самый важный этап. Нам нужно создать Группу страниц. Внутри этой группы создаем одну единственную Страницу. Именно для этой страницы мы устанавливаем флаг ВертикальнаяПрокруткаПриСжатии (в некоторых версиях свойство называется ВертикальнаяПрокрутка).
  4. Размещение контента: Все элементы, которые должны прокручиваться (поля ввода, списки, таблицы), мы помещаем внутрь этой страницы.
  5. Создание Футера (подвала): Ниже группы страниц (в корне формы) добавляем еще одну Обычная группа. В нее кладем кнопки или итоги. Чтобы футер всегда «прилипал» к низу, убедимся, что средняя часть (группа страниц) имеет свойство РастягиватьПоВертикали в значении Истина.

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

Метод 2: Использование состава командной панели мобильного устройства

Рассмотрим альтернативный вариант, который предоставляет сама платформа для работы с кнопками. В свойствах управляемой формы существует объект СоставКоманднойПанелиНаМобильномУстройстве. Это специализированный механизм, предназначенный для адаптации интерфейса под смартфоны и планшеты.

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


// Пример получения доступа к составу командной панели
СоставПанели = ЭтаФорма.СоставКоманднойПанелиНаМобильномУстройстве;
// Мы можем только просматривать состав, настройка производится в конфигураторе

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

Программное управление видимостью при работе с клавиатурой

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

Для этого воспользуемся событием формы ПриАктивизацииПоля. Разберем пример кода:


&НаКлиенте
Процедура ПриАктивизацииПоля(Элемент)
    // Если фокус попал в текстовое поле, скрываем футер для экономии места
    Если ТипЗнч(Элемент) = Тип("ПолеФормы") Тогда
        Элементы.ГруппаФутер.Видимость = Ложь;
    Иначе
        Элементы.ГруппаФутер.Видимость = Истина;
    КонецЕсли;
КонецПроцедуры

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

Особенности настройки «Растягивания» элементов

Чтобы закрепление работало корректно, необходимо правильно настроить свойства растягивания. Рассмотрим основные правила настройки свойств РастягиватьПоВертикали и РастягиватьПоГоризонтали:

Если вы заметили, что футер «плавает» или находится сразу под контентом, не доходя до низа экрана — проверьте свойство Высота у центральной группы страниц. Иногда полезно установить минимальную высоту, чтобы при пустом контенте структура не схлопывалась.

Использование декораций для создания «Безопасных зон»

В современных мобильных устройствах (особенно на iOS с их «челками» и нижними полосками навигации) элементы управления в самом низу могут накладываться на системные жесты. Выясним, как этого избежать. Рекомендуется в самый низ закрепленного футера добавлять элемент типа Декорация - Поясняющая надпись с пустой строкой и фиксированной высотой (например, 2 или 3). Это создаст необходимый отступ, который убережет пользователя от случайного закрытия приложения при попытке нажать на кнопку в футере.

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

Мы проанализировали несколько подходов к закреплению элементов в мобильном приложении 1С. Подведем итоги:

  1. Для сложного интерфейса с закрепленными информационными панелями используйте структуру Группа (фиксированная) -> Группа Страниц (скролл) -> Группа (фиксированная).
  2. Для простых форм с набором кнопок используйте системный механизм СоставКоманднойПанелиНаМобильномУстройстве.
  3. Всегда отключайте ВертикальнаяПрокрутка у самой формы, если используете внутренний контейнер для скролла.
  4. Следите за свойством ВертикальнаяПрокруткаПриСжатии у страниц — это «сердце» мобильного скролла.

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

← На главную