Как настроить независимую ширину колонок в мобильной таблице 1С на Android

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

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

Анализируем причину поведения мобильной платформы

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

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

Решение 1: Переход от режима «Таблица» к режиму «Список»

Рассмотрим наиболее правильный с точки зрения мобильной разработки подход. Если ваша задача — создать удобный интерфейс, напоминающий нативный Android RecyclerView, нам следует изменить свойство таблицы Отображение.

  1. Откроем свойства таблицы в редакторе формы.
  2. Найдем параметр Отображение (Representation).
  3. Установим значение Список (List) вместо Таблица.

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

Решение 2: Использование «Сборной строки» через ФорматированнуюСтроку

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

Посмотрим на пример кода, который формирует данные для такой ячейки:


&НаСервере
Процедура ПриПолученииДанныхНаСервере(ИмяЭлемента, ОформленияСтрок)
    Для Каждого СтрокаОформления Из ОформленияСтрок Цикл
        ТекстВерх = СтрокаОформления.Данные.Артикул;
        ТекстНиз = СтрокаОформления.Данные.Наименование;
        
        // Создаем форматированную строку с переносом
        ЦветАртикула = ЦветаСтиля.ПоясняющийТекст;
        ШрифтАртикула = Новый Шрифт(,,Истина); // Жирный
        
        СборнаяСтрока = Новый ФорматированнаяСтрока(ТекстВерх, ШрифтАртикула, ЦветАртикула, , Символы.ПС + ТекстНиз);
        СтрокаОформления.Ячейки.ОбщаяКолонка.УстановитьТекст(СборнаяСтрока);
    КонецЦикла;
КонецПроцедуры

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

Решение 3: Оптимизация группировок и свойств растягивания

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

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

Решение 4: Обходной путь через изменение шрифтов

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

Рекомендации по проектированию

Подводя итог, нужно признать, что мобильная платформа 1С на текущий момент (вплоть до версий 8.3.20+) сохраняет специфическую логику отрисовки таблиц. Мы рекомендуем придерживаться следующих правил при проектировании форм для Android:

  1. Минимизируйте количество колонок. На экране смартфона редко помещается больше 2-3 колонок без потери читаемости.
  2. Используйте вертикальные группы. Вместо широкой таблицы делайте узкую, но высокую строку, где данные расположены друг под другом.
  3. Комбинируйте данные. Используйте вычисляемые поля для объединения информации (например, «Цена» и «Остаток» в одной строке через слэш).
  4. Тестируйте на разных устройствах. Поведение сетки на планшете и на узком смартфоне может значительно отличаться из-за разных алгоритмов адаптации платформы.

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

← На главную