При переходе на новые версии платформы «1С:Предприятие 8.3» многие специалисты столкнулись с неприятным поведением интерфейса: при пролистывании больших отчетов или табличных частей ползунок прокрутки самопроизвольно сбрасывается в начало, «заедает» или вовсе ведет себя непредсказуемо. В этой статье мы подробно разберем, почему это происходит, как это связано с переходом на библиотеку Cairo и какие версии платформы наиболее стабильны для работы.
Для начала выясним причину таких масштабных изменений в визуальной части платформы. Начиная с релизов 8.3.15.1830 и полномасштабно в 8.3.16, разработчики компании «1С» осуществили переход на использование графической библиотеки Cairo. Рассмотрим подробнее, для чего это было сделано:
SVG для иконок, что критично для современных мониторов с высоким разрешением.Однако внедрение такой фундаментальной технологии не прошло гладко. Проанализируем ситуацию: новый механизм инкрементальной отрисовки в Cairo в первых редакциях некорректно обрабатывал события прокрутки в объекте ТабличныйДокумент.
Посмотрим на примеры того, как проявляется ошибка в версии 8.3.16.1030 и аналогичных сборках этой ветки. Пользователи выделяют следующие критические моменты:
Проанализируем ситуацию: библиотека Cairo иначе взаимодействует с очередью сообщений операционной системы о перерисовке окон. Если отчет содержит сложные привязки или группировки, расчет координат ползунка (Scroll Info) начинает давать сбои, что и приводит к «прыжкам» интерфейса.
Многие ошибочно полагают, что ветка 8.3.15 полностью свободна от этих проблем. Однако, начиная со сборки 1830, элементы нового движка начали внедряться и в этот релиз. Выясним, с какими трудностями можно столкнуться здесь:
Во-первых, зафиксированы проблемы с привязками в управляемых формах. Элементы управления могут накладываться друг на друга, если форма была спроектирована в старых версиях платформы с жестко заданными границами. Во-вторых, часто наблюдается баг с «вечными» полосами прокрутки: ПолеСписка или ТабличноеПоле отображают вертикальную полосу прокрутки даже тогда, когда данных мало и они полностью умещаются на экране.
Рассмотрим по шагам, как проверить наличие проблемы на вашем релизе:
Если вы столкнулись с вышеописанными глюками, проанализируем доступные пути решения. На основе опыта эксплуатации различных релизов, можно выделить следующие стратегии:
Если ваша конфигурация позволяет работать на 15-й ветке, наиболее стабильными считаются сборки до 1830. В них еще не задействованы проблемные механизмы Cairo в той мере, в какой они мешают работе. Это позволит сохранить привычную скорость отрисовки GDI.
Как показала практика, полноценно ошибки Cairo были исправлены только в ветке 8.3.17 (начиная с релиза 1386 и выше). Разработчики оптимизировали кэширование областей отрисовки и исправили математическую модель расчета координат. Если вы планируете уходить с 8.3.15, мы рекомендуем пропускать 16-й релиз и сразу переходить на актуальные сборки 8.3.17 или 8.3.18.
Выясним техническую тонкость: Cairo крайне чувствителен к нестандартному масштабированию ОС (например, 125% или 150%). Если вы не можете сменить платформу прямо сейчас, попробуйте следующее:
Разберем ситуацию с точки зрения системного администрирования. Проблема не в конкретном отчете или коде 1С, а в том, как Платформа взаимодействует с видеокартой и драйверами через новую библиотеку. В некоторых случаях временным решением может стать отключение аппаратного ускорения видеокарты в настройках Windows, что заставит Cairo выполнять отрисовку программно, более медленно, но без визуальных артефактов.
Резюмируем: если вы цените стабильность работы с табличными документами и отчетами, избегайте использования 8.3.16.1030. Для комфортной работы используйте либо проверенные временем ранние сборки 8.3.15, либо переходите на современные исправленные релизы 8.3.17+, где работа движка Cairo была доведена до приемлемого уровня стабильности.