При переходе на современные версии платформы 1С:Предприятие 8.3 (особенно начиная с релиза 8.3.8 и выше) и интерфейс «Такси», многие разработчики и пользователи сталкиваются с исчезновением привычного ползунка вертикальной прокрутки в списках документов или справочников. Вместо возможности плавно пролистать список сверху вниз, система предлагает кнопки перехода по страницам или упрощенную навигацию. В этой статье мы подробно разберем, почему это происходит, как работает механизм отображения данных и можно ли вернуть классическую полосу прокрутки.
Разберем ситуацию с точки зрения архитектуры платформы. В старых версиях 1С (например, 8.2 или ранних 8.3 в режиме обычных форм) система при открытии списка пыталась определить общее количество записей в таблице базы данных. Это позволяло отрисовать «пропорциональный» ползунок прокрутки: его размер и положение четко соответствовали объему данных.
Проанализируем, к чему это приводило на практике. Для того чтобы вычислить размер ползунка, платформа была вынуждена выполнять SQL-запрос вида SELECT COUNT(*). Если в динамическом списке используется сложный запрос с множеством соединений или в таблице содержатся миллионы записей, такой подсчет занимал значительное время. В итоге пользователь видел «песочные часы» еще до того, как первая порция данных выводилась на экран.
С выходом новых механизмов платформы (интерфейс «Такси»), фирма «1С» приняла решение оптимизировать этот процесс. Теперь система работает по принципу динамического считывания: она получает с сервера только ту порцию данных, которая физически помещается на экране, плюс небольшой «запас» для плавности. Поскольку общее количество записей системе заранее неизвестно, она не может определить, в каком месте списка находится пользователь в данный момент, и, следовательно, не может отрисовать корректный ползунок прокрутки.
Многие разработчики пытаются решить проблему через свойства элемента формы Таблица. Посмотрим на основные настройки, которые могут вводить в заблуждение:
ДинамическийСписок. Если оно включено, система будет подгружать данные порциями. Рассмотрим ситуацию: при отключении этого свойства система попытается прочитать все данные сразу. Для небольших списков это может вернуть ползунок, но для больших списков это приведет к критическому падению производительности или ошибке переполнения памяти.Проанализируем поведение системы в зависимости от режима отображения. В веб-клиенте или при определенных настройках разрешения экрана платформа принудительно переключается в режим постраничной навигации. Это сделано для того, чтобы минимизировать объем данных, передаваемых между сервером и браузером пользователя.
Существует мнение, что в файловой базе данных полоса прокрутки должна работать иначе. Однако, начиная с версии платформы 8.3.15 и выше, поведение интерфейса «Такси» унифицировано. Даже в файловом режиме платформа старается не выполнять ресурсоемкие операции по подсчету итогового количества строк без явной необходимости. Это позволяет сохранять единую логику работы кода независимо от типа используемой СУБД.
Рассмотрим, как можно программно управлять динамическим списком. Иногда разработчики пытаются принудительно обновить список, используя следующий код:
// Пример попытки обновления списка в форме
Элементы.Список.Обновить();
// Однако это не вернет ползунок, если включено динамическое считывание
Разберем, как эффективно работать в новых реалиях, если кнопки страниц кажутся неудобными. Современная концепция 1С предполагает, что пользователю не нужно вручную пролистывать тысячи строк. Для поиска информации следует использовать встроенные инструменты:
Проанализируем ситуацию с колесиком мыши. В большинстве случаев скроллинг колесиком продолжает работать. При достижении конца видимой области платформа автоматически посылает запрос на сервер и подгружает следующие 20–50 строк. Визуально это выглядит как «бесконечный список», но ползунок при этом может оставаться неподвижным или отсутствовать вовсе до момента достижения конца всей выборки.
Иногда вернуть более-менее привычное поведение можно через настройки формы. Рассмотрим свойство таблицы ВариантУправленияВысотой. Если установить его в значение Авто или явно ограничить количество строк, система может изменить способ отрисовки элементов навигации. Однако стоит помнить, что в мобильных клиентах или веб-интерфейсе кнопки страниц все равно будут доминировать над полосой прокрутки из-за ограничений сенсорного ввода и протокола передачи данных. Для более глубокого понимания альтернативных возможностей кастомизации интерфейса полезно использовать руководство по детальной настройке динамических списков.
Выясним окончательно: можно ли «побороть» кнопки страниц и вернуть полосу прокрутки? В полной мере — нет. Это платформенное решение, заложенное в ядро 1С:Предприятия 8.3 для обеспечения масштабируемости и высокой скорости работы интерфейса. Попытки программно эмулировать ползунок через загрузку данных в ТаблицуЗначений оправданы только для очень маленьких списков (до 100–200 записей). Во всех остальных случаях следует обучать пользователей работе с мощными инструментами поиска и фильтрации, которые предоставляет платформа. Для повышения удобства такой работы можно применить расширение для организации отборов по шаблону в списках.
Таким образом, мы видим, что отсутствие вертикальной полосы прокрутки — это не ошибка конфигурации «Управление торговлей» или другой базы, а результат эволюции платформы. Основная цель этого изменения — сделать так, чтобы форма открывалась мгновенно, даже если в списке хранятся данные за 10 лет работы предприятия.