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

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

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

Выясним причину такого поведения. Отсутствие горизонтального скроллинга в таблицах — это не ошибка, а особенность современной архитектуры мобильного интерфейса 1С, начиная с платформы 8.3.5. Разработчики платформы сознательно отказались от этого механизма в пользу более нативных для мобильных устройств подходов, где предпочтение отдается вертикальной прокрутке.

Рассмотрим, какие инструменты предоставляет платформа для решения этой задачи.

Решение 1: Использование адаптивного механизма платформы

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

Автоматическое преобразование в карточки

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

Если же и в саму карточку не помещается вся информация, может появиться постраничная прокрутка внутри карточки, которая обозначается точками-индикаторами внизу.

Управление поведением колонок при сжатии

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

  1. Откройте нужную форму в конфигураторе.
  2. Выделите на форме таблицу (объект ТаблицаФормы).
  3. В палитре свойств найдите свойство ПоведениеПриСжатииПоГоризонтали. Установите для него значение ПереноситьЭлементыПоВажности. Это основной шаг, который включает механизм "умного" переноса.
  4. Теперь необходимо указать "важность" для каждой колонки. Выделите поочередно каждую колонку таблицы.
  5. В палитре свойств для каждой колонки найдите свойство ВажностьПриОтображении. Задайте соответствующее значение:
    • ОченьВысокая: для самых важных колонок, которые должны остаться на первой строке.
    • Высокая: для колонок, которые также важны, но могут быть перенесены, если не хватает места.
    • Обычная: для остальных колонок.
    • Низкая и ОченьНизкая: для второстепенных данных, которые будут переноситься в последнюю очередь.

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

Решение 2: Альтернативные подходы для сложных случаев

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

Вывод данных в формате HTML

Этот способ предоставляет максимальную гибкость, но и является самым трудоемким. Суть его в следующем:

  1. На форме размещается элемент управления типа ПолеHTMLДокумента.
  2. Программно, с помощью кода на встроенном языке, вы формируете HTML-страницу, представляющую ваши данные в виде таблицы (<table>).
  3. Внутри HTML вы можете использовать CSS-стили для управления прокруткой (например, overflow-x: auto;), закрепления колонок и любого другого оформления.
  4. Сформированный HTML-текст присваивается полю на форме.

Плюсы: полный контроль над внешним видом и поведением.

Минусы: сложность реализации, необходимость знаний HTML/CSS, потенциальные проблемы с производительностью при больших объемах данных.

Использование Табличного документа

Еще один "обходной" путь — использование объекта ТабличныйДокумент.

  1. На форме размещается элемент ПолеТабличногоДокумента.
  2. В коде вы создаете и заполняете объект ТабличныйДокумент данными из вашей таблицы.
  3. У объекта ТабличныйДокумент есть свои механизмы отображения и прокрутки, которые могут работать иначе, чем у стандартной таблицы формы.

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

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

← На главную