Как убрать лишнюю полосу прокрутки и пустую строку в списках выбора на платформе 8.3.17

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

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

В этой статье мы подробно разберем, почему возникает этот эффект, проанализируем технические причины и рассмотрим все доступные способы решения — от системных обновлений до временных «костылей».

Причина возникновения ошибки

Давайте выясним причину такого поведения интерфейса. Данная проблема официально признана ошибкой платформы и зарегистрирована под номером 10222416 (в некоторых источниках 000068205). Она специфична для «Толстого клиента» и обычного интерфейса, работающего в режимах совместимости Версия 8.2 или Версия 8.2.16.

Суть дефекта заключается в некорректном расчете высоты выпадающего окна (ComboBox) движком отрисовки. Платформа резервирует лишние пиксели под горизонтальный скролл или дополнительные отступы, которые не требуются. В результате системное окно Windows, в котором отрисовывается список, считает, что контент не помещается, и активирует вертикальную полосу прокрутки.

Ситуация осложняется на мониторах с высоким разрешением (High DPI). Если в настройках Windows установлено масштабирование интерфейса (например, 125% или 150%), ошибка проявляется практически в 100% случаев из-за математических погрешностей при округлении высоты элементов.

Решение №1: Обновление платформы (Рекомендуемое)

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

  1. Переход на ветку 8.3.18: В версии 8.3.18.1128 и выше проблема полностью устранена.
  2. Обновление внутри ветки 8.3.17: Если ваша инфраструктура жестко привязана к 17-й версии, необходимо обновиться до релиза 8.3.17.1851 или более поздних патчей этой ветки.

После обновления платформы никакие дополнительные действия с конфигурацией не требуются — списки выбора начнут отображаться корректно автоматически.

Решение №2: Программная корректировка количества строк

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

Посмотрим на пример кода, который можно добавить в процедуру ПриОткрытии формы для конкретного проблемного поля:


Процедура ПриОткрытии()
    // Устанавливаем количество строк явно, чтобы подавить авторасчет
    ЭлементыФормы.ПолеВводаТипЦен.ВыпадающийСписокКоличествоСтрок = 5;
КонецПроцедуры

Важный нюанс: Этот метод требует изменения каждой формы, где наблюдается проблема, что в больших конфигурациях (например, УТ 10.3 или БП 2.0) может быть нецелесообразно.

Решение №3: Изменение шрифтов и стилей конфигурации

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

Попробуйте выполнить следующие действия:

  1. В свойстве конфигурации Стиль найдите основной шрифт. Если там установлен MS Shell Dlg, попробуйте изменить его на Arial или Segoe UI размера 8 или 9.
  2. После изменения стиля обязательно очистите локальный кэш метаданных на компьютере. Для этого нужно удалить содержимое папок в каталоге:
    %AppData%\1C\1Cv8\

Иногда изменение шрифта на более «узкий» позволяет платформе корректно вписать текст в отведенную область без активации скролла.

Решение №4: Использование ключа запуска /NoPlatformStyle

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

В настройках запуска информационной базы в поле "Дополнительные параметры запуска" добавьте:

/NoPlatformStyle

Это изменит визуальный вид кнопок и полей ввода на более «классический» (в стиле Windows 2000/XP), но в большинстве случаев это полностью убирает ошибки рендеринга ComboBox, так как за отрисовку начинает отвечать исключительно операционная система без вмешательства графического движка платформы 8.3.17.

Резюме

Подводя итог, мы видим, что проблема с полосой прокрутки — это чистый баг платформы 8.3.17.1496. Если вы столкнулись с этой ситуацией, наиболее эффективным алгоритмом действий будет:

  1. Обновление платформы до 8.3.17.1851 или 8.3.18.x. Это снимет проблему раз и навсегда.
  2. Если обновление запрещено регламентом — использование ключа /NoPlatformStyle как временная мера.
  3. Откат на стабильную версию 8.3.15 или 8.3.16, если функционал 17-й версии вам не критичен.

Помните, что режим совместимости 8.2.16 в сочетании с новыми релизами 8.3 — это всегда зона риска для обычного интерфейса, поэтому такие визуальные артефакты стоит ожидать и в будущем при миграции на новые ветки платформы.

← На главную