Многие системные администраторы и пользователи веб-клиента «1С:Предприятие» столкнулись с неприятной ситуацией: после автоматического обновления браузера Google Chrome до версии 61 (и выше) в печатных формах и некоторых окнах системы полностью перестала работать прокрутка. Пользователь вращает колесико мыши или нажимает клавиши управления курсором, визуально полоса прокрутки (скроллбар) перемещается, но содержимое страницы остается неподвижным. Рассмотрим подробно, почему это произошло и как восстановить работоспособность системы.
Для того чтобы понять, как лечить проблему, проанализируем изменения в движке Chromium, на котором базируется Google Chrome. Начиная с версии 61, разработчики браузера внедрили обновленный стандарт CSSOM View Module. Основное изменение коснулось того, как браузер интерпретирует свойства scrollTop и scrollLeft для корневого элемента страницы.
До этого обновления для получения или установки позиции прокрутки программисты могли обращаться к объекту document.body. Однако новый стандарт предписал использовать для этих целей document.documentElement. В коде веб-клиента «1С:Предприятие» на тот момент использовался старый подход, ориентированный на document.body. В результате, когда пользователь пытался прокрутить страницу, браузер возвращал значение «0» или игнорировал команды скриптов 1С, так как «ждал» обращения к другому объекту. Это привело к рассинхронизации между визуальным элементом полосы прокрутки и фактическим отображением контента.
Ошибка затронула не только Google Chrome. Поскольку на движке Chromium работают многие современные браузеры, аналогичные симптомы проявились в:
При этом в браузерах Mozilla Firefox и Internet Explorer проблема отсутствовала, так как они используют другие движки рендеринга или иначе интерпретируют стандарты CSSOM.
Компания 1С признала проблему и зарегистрировала её под номером 20171416. Единственным стабильным и долгосрочным решением является обновление технологической платформы «1С:Предприятие 8». Исправления были выпущены для всех актуальных на тот момент веток. Проверим минимально необходимые версии релизов, в которых прокрутка снова работает корректно:
Разберем по шагам процесс устранения проблемы через обновление. Сначала нам необходимо определить текущую версию платформы. Для этого в веб-клиенте нажмем кнопку «Сервис и настройки» (или «О программе»). Если версия ниже указанных, планируем обновление серверной части и клиентских лицензий (при необходимости).
Если по каким-то причинам оперативное обновление платформы невозможно (например, из-за жестких регламентов или необходимости длительного тестирования новой версии на копиях баз), рассмотрим альтернативные варианты «оживления» веб-клиента.
1. Использование альтернативных браузеров
Как показывает практика обсуждений, самым быстрым способом продолжить работу является временный переход на Internet Explorer или Mozilla Firefox. В этих браузерах механизмы обработки событий прокрутки не менялись столь радикально, и веб-клиент 1С продолжает функционировать в штатном режиме.
2. Работа через тонкий клиент
Рекомендуем пользователям, у которых есть такая возможность, переключиться с веб-клиента на Тонкий клиент 1С. Тонкий клиент работает со своим собственным движком отрисовки и не зависит от обновлений сторонних браузеров, установленных в операционной системе.
3. Настройка флагов Chrome (для старых версий)
На момент возникновения проблемы существовал способ исправить ситуацию через скрытые настройки браузера. Рассмотрим его для понимания логики процесса, хотя в самых современных версиях Chrome эти флаги могут быть уже удалены:
chrome://flags.Также в некоторых случаях помогало отключение параметра Scroll Anchoring. Это заставляло браузер использовать старые алгоритмы обработки прокрутки, которые были совместимы с кодом 1С.
Посмотрим на сопутствующую проблему, которая часто шла в паре с отсутствием прокрутки в Chrome 61. При попытке вывести форму на печать пользователи видели пустой белый экран или зависшее окно предпросмотра. Это также следствие изменения обработки слоев (layering) в Chromium.
Выясним, как это лечилось: системные администраторы иногда использовали расширения типа User CSS, чтобы принудительно внедрить на страницу стиль overflow: auto !important; для контейнеров форм. Однако это «костыльное» решение, которое могло привести к артефактам в других частях интерфейса. Поэтому мы настоятельно рекомендуем не злоупотреблять стилями, а сосредоточиться на обновлении платформы.
Проанализировав ситуацию, мы видим, что конфликт возник на стыке быстро развивающихся веб-стандартов и консервативной архитектуры корпоративного софта. Чтобы избежать подобных проблем в будущем, рекомендуем:
Таким образом, если у ваших пользователей «застыли» печатные формы в Chrome, первым делом проверьте номер версии платформы. Если он меньше 8.3.10.2615, планируйте обновление. Это решит проблему прокрутки и сопутствующие ошибки отображения раз и навсегда.