При разработке решений для мобильного клиента 1С:Предприятия мы часто сталкиваемся с необходимостью отображения больших объемов табличных данных. Одной из распространенных проблем является ситуация, когда таблица значений на форме, содержащая сотни или тысячи строк, в мобильном клиенте отображает лишь их часть, например, только первые 200 строк. Остальные строки при прокрутке не появляются, хотя в данных таблица присутствует в полном объеме. Давайте рассмотрим, как эффективно решить эту проблему.
Первоначально проблема проявляется в следующем: у нас есть обработка в конфигурации, например, на базе 1С:Управление торговлей 10, адаптированная для работы в мобильном клиенте. В этой обработке имеется таблица значений (ТЗ), в которую загружается значительное количество строк, скажем, более 2000. При открытии формы в мобильном клиенте и попытке прокрутки вниз, мы обнаруживаем, что отображается только первые 200 строк. При этом отладчик показывает, что ТЗ действительно содержит все 2000+ строк, и поиск по несуществующей на экране, но присутствующей в ТЗ строке, успешно находит ее.
Такое поведение может быть обусловлено несколькими факторами, связанными с особенностями работы управляемых форм и мобильной платформы 1С:
Основным и наиболее эффективным способом решения проблемы с обрезкой строк в мобильном клиенте является правильная настройка свойства табличного поля формы ВариантУправленияВысотой. Это свойство появилось в платформе 1С:Предприятие 8.3.10 и предназначено специально для управления высотой таблицы в управляемых формах, особенно актуально для мобильной платформы.
Рассмотрим по шагам, как применить это решение:
Откройте форму обработки или документа в конфигураторе. Перейдите к форме, на которой расположена таблица значений, отображаемая в мобильном клиенте.
Выделите табличное поле. В дереве элементов формы найдите и выделите элемент, который является вашей таблицей значений (обычно это элемент типа Таблица).
Найдите свойство ВариантУправленияВысотой. В палитре свойств выбранного табличного поля найдите свойство с именем ВариантУправленияВысотой.
Установите значение ВСтрокахТаблицы. По умолчанию это свойство может быть установлено в Авто или ФиксированнаяВысота. Для корректного отображения всех строк в мобильном клиенте необходимо установить его в значение ВСтрокахТаблицы.
При этом значении таблица будет стремиться отобразить все свои строки, адаптируя свою высоту под количество содержащихся в ней данных, а не под фиксированное значение или автоматически определенное, которое может быть ошибочным.
После изменения этого свойства и сохранения конфигурации, обновленный мобильный клиент должен начать корректно отображать все строки вашей таблицы значений.
Хотя свойство ВариантУправленияВысотой является ключевым, иногда могут потребоваться дополнительные действия или понимание других аспектов поведения мобильного клиента:
В обсуждаемой ситуации конфигурация работала в режиме совместимости с версией 8.3.7, а мобильный клиент использовал версию 8.3.18. Такое несоответствие может быть источником проблем, так как функционал и поведение элементов в разных версиях платформы могут значительно отличаться. Свойство ВариантУправленияВысотой появилось в 8.3.10. Если ваша конфигурация использует режим совместимости ниже этой версии, это свойство может не работать или работать некорректно. Мы рекомендуем по возможности повысить режим совместимости до версии платформы, поддерживающей этот функционал (8.3.10 или выше). Однако, всегда тщательно тестируйте изменения режима совместимости, так как это может повлиять на другую логику в конфигурации.
РастягиватьПоВертикали и АвтоВысотаВ процессе диагностики могли быть предприняты попытки управления отображением через свойства РастягиватьПоВертикали или АвтоВысота. Эти свойства также влияют на размер элементов, но в контексте мобильного клиента и больших таблиц ВариантУправленияВысотой имеет приоритетное значение. Если ВариантУправленияВысотой установлен корректно, эти свойства обычно не будут причиной обрезки строк, хотя их некорректная настройка может вызывать другие проблемы с компоновкой формы (например, таблица может "уходить" за пределы видимости вниз, не позволяя видеть другие элементы).
Бывали случаи, когда наличие или отсутствие других элементов под таблицей влияло на расчет ее высоты. Например, добавление декорации или кнопки под таблицей, которую затем не видно, может указывать на то, что форма некорректно определяет общую высоту макета. Однако, чаще всего это следствие основной проблемы с определением высоты таблицы, а не ее причина.
Даже с правильной настройкой ВариантУправленияВысотой, отображение таблиц с очень большим количеством строк (тысячи и более) может вызывать сложности с производительностью или удобством использования на мобильных устройствах. Мы рекомендуем рассмотреть следующие подходы для оптимизации:
"ВажностьПриОтображении" колонок: Используйте свойство ВажностьПриОтображении для колонок табличного поля. Это свойство позволяет платформе адаптировать отображение колонок к ширине экрана. Колонки с более низкой важностью могут быть скрыты или сжаты, чтобы освободить место для более важных данных.
"ПоведениеПриСжатииПоГоризонтали": Это свойство дополняет ВажностьПриОтображении, определяя, как колонки сжимаются или скрываются. Мы можем установить его в НеСжимать, Сжимать или Скрывать в зависимости от приоритета.
Разбиение на страницы или использование карточек: Для очень больших объемов данных или таблиц с множеством колонок, которые не помещаются на экране, рассмотрите альтернативные способы представления:
ЗапросОбновления и обработчик события ОбработкаЗапросаОбновления, позволяющие реализовать "pull to refresh" или подгрузку при достижении конца списка.Ограничение количества строк: Хотя в мобильном клиенте нет жестких программных ограничений на количество строк, из-за производительности или логики бизнеса иногда целесообразно ограничивать количество выводимых строк на стороне сервера или запроса, предоставляя пользователю возможности для фильтрации или поиска.
Если мы сталкиваемся с проблемой обрезки строк таблицы значений в мобильном клиенте 1С, первым делом следует:
ВариантУправленияВысотой в значение ВСтрокахТаблицы.РастягиватьПоВертикали, АвтоВысота, а также ВажностьПриОтображении для колонок.Применение этих шагов позволит нам корректно отображать все необходимые данные в таблицах мобильного клиента, обеспечивая полноценную работу пользователей с нашими решениями.