При разработке приложений на мобильной платформе 1С (МП) разработчики часто сталкиваются с неприятной особенностью: табличная часть со множеством колонок вместо привычной горизонтальной прокрутки начинает «сжимать» содержимое. В итоге колонки становятся настолько узкими, что текст в них невозможно прочитать, а пользователь не может сдвинуть таблицу вправо, чтобы увидеть скрытые данные. Это поведение особенно заметно при переходе со старых версий платформы (например, 8.3.5) на современные (8.3.12 и выше).
В этой статье мы подробно разберем, почему так происходит, и проанализируем проверенные способы, которые помогут нам вернуть удобный интерфейс и настроить корректное отображение данных на экранах мобильных устройств.
Прежде всего, нам необходимо выяснить причину. Начиная с определенных версий мобильной платформы, основным стандартом стал интерфейс «Такси». Логика этого интерфейса ориентирована на то, чтобы минимизировать горизонтальный скролл, так как он считается «плохим тоном» в мобильной разработке. Платформа пытается принудительно «втиснуть» все имеющиеся колонки в ширину экрана устройства.
Проанализируем ситуацию: в старых версиях (например, до 8.3.5) таблица вела себя более инертно — если колонки не помещались, они просто уходили за край экрана. В современных реалиях нам приходится вручную переопределять это поведение через свойства элементов формы.
Это первый и самый важный шаг. Если мы оставим настройки ширины колонок в значении «0» (автоматически), платформа всегда будет пытаться их сжать. Чтобы принудительно вызвать появление прокрутки, выполним следующие действия по шагам:
РастягиватьПоГоризонтали в значение Нет. Это критически важно: если установлено «Да» или «Авто», таблица будет подстраиваться под ширину контейнера.Ширина. Вместо нуля укажите конкретное числовое значение (например, 10, 15 или 20), соответствующее ожидаемому объему данных.АвтоМаксимальнаяШирина. В версиях платформы 8.3.15 и старше его нужно установить в значение Нет, иначе система проигнорирует ваши настройки ширины в пользу оптимизации под экран.Иногда настройки самой таблицы недостаточно, так как родительский элемент (сама форма или группа, в которой лежит таблица) ограничивает её расширение. Рассмотрим «хак», который часто используют опытные разработчики мобильных приложений.
Мы можем поместить таблицу в специальный контейнер. Попробуем обернуть таблицу в Обычную группу или Группу страниц. Основная идея заключается в том, чтобы создать условия, при которых ширина контента внутри группы будет заведомо больше ширины экрана. Если у группы разрешена горизонтальная прокрутка, а внутренняя таблица имеет фиксированную большую ширину, платформа будет вынуждена активировать свайп влево-вправо.
Заметим, что статичные настройки в конфигураторе не всегда корректно подхватываются мобильным клиентом. В некоторых случаях помогает принудительная инициализация параметров в коде. Разберем пример кода, который можно разместить в процедуре ПриСозданииНаСервере или ПриОткрытии:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Устанавливаем фиксированную ширину для ключевых колонок
Элементы.ТоварыНоменклатура.Ширина = 25;
Элементы.ТоварыКоличество.Ширина = 10;
Элементы.ТоварыЦена.Ширина = 12;
// Отключаем автоматическое растягивание таблицы
Элементы.Товары.РастягиватьПоГоризонтали = Ложь;
КонецПроцедуры
Такой подход заставляет платформу пересчитать геометрию формы после её загрузки, что часто приводит к появлению долгожданной полосы прокрутки.
Если колонок слишком много (более 5-7), даже с прокруткой работать на мобильном устройстве будет неудобно. 1С официально рекомендует использовать альтернативные методы отображения данных. Рассмотрим их подробнее:
Проанализируем еще один момент: на мобильных устройствах полоса прокрутки (scrollbar) часто является невидимой по умолчанию. Она появляется только в момент, когда пользователь начинает физически сдвигать контент пальцем (жест свайпа). Поэтому, если после всех настроек вы не видите полосу — просто попробуйте «проскроллить» таблицу вправо.
Внимание: Если на форме присутствуют другие элементы, использующие горизонтальные жесты (например, ГруппаСтраниц с перелистыванием закладками), может возникнуть конфликт жестов. В этом случае система может не понять, хочет ли пользователь перелистнуть страницу или сдвинуть таблицу. Старайтесь избегать вложенности горизонтально прокручиваемых элементов друг в друга.
Для того чтобы победить сжатие колонок, мы должны занять активную позицию в управлении свойствами формы. Помните, что платформа 1С стремится к автоматизации, но в мобильном интерфейсе «автоматика» часто работает во вред читаемости данных. Используйте комбинацию отключения растягивания, фиксации ширины колонок и, при необходимости, программную установку свойств. Это обеспечит вашим пользователям комфортную работу даже с объемными табличными частями.