Почему в веб-клиенте 1С не работает масштабирование табличного документа через Ctrl + Колёсико мыши?

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

При переходе пользователей с тонкого клиента на работу через веб-клиент (в браузере) часто возникает неприятная проблема: привычное сочетание клавиш Ctrl + Колёсико мыши перестает масштабировать табличный документ (отчеты, печатные формы, счета-фактуры). Вместо изменения размера шрифта и ячеек страница просто прокручивается вверх или вниз, либо масштабируется весь интерфейс браузера целиком, ломая верстку программы.

В этой статье мы подробно разберем технические причины такого поведения платформы «1С:Предприятие 8», изучим официальные ограничения веб-клиента и рассмотрим практические способы решения этой проблемы как для обычных пользователей, так и для разработчиков конфигураций.

Техническая причина: почему в браузере не работает Ctrl + Колёсико

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

В веб-клиенте ситуация кардинально меняется, так как вся работа происходит внутри веб-браузера (Chrome, Firefox, Safari, Edge). Здесь мы сталкиваемся со следующими ограничениями:

  1. Конфликт обработчиков событий браузера. Для любого современного браузера комбинация Ctrl + Колёсико мыши является глобальным зарезервированным жестом масштабирования всей веб-страницы. Когда пользователь пытается использовать это сочетание над табличным документом, браузер стремится увеличить или уменьшить масштаб всего окна 1С целиком.
  2. Сложная HTML-структура табличного документа. В веб-клиенте объект ТабличныйДокумент рендерится как тяжелое иерархическое дерево элементов DOM (HTML-таблицы, контейнеры div, абсолютное позиционирование для объединенных ячеек и линий). Чтобы масштабировать только саму таблицу средствами JavaScript, веб-клиенту пришлось бы перехватывать событие прокрутки wheel, отменять стандартное действие браузера через event.preventDefault() и динамически пересчитывать геометрические параметры сотен или тысяч элементов HTML на лету.
  3. Проблемы производительности. Попытка реализовать плавное интерактивное масштабирование «тяжелой» HTML-таблицы при помощи скриптов привела бы к катастрофическому падению производительности (лагам, зависаниям вкладки браузера), особенно на слабых компьютерах пользователей. Поэтому разработчики платформы «1С» заблокировали этот механизм в веб-клиенте, оставив за колесиком мыши только стандартную функцию вертикальной прокрутки.

Официальные ограничения веб-клиента при работе с таблицами

Помимо невозможности масштабирования колесиком мыши, работа с табличными документами в браузере имеет еще несколько задокументированных ограничений, о которых полезно знать:

Понимая эти ограничения, мы можем предложить пользователям и разработчикам удобные альтернативные варианты изменения масштаба.

Вариант 1. Использование встроенного масштабирования платформы (для пользователей)

Начиная с версии платформы 8.3.10, в 1С реализован собственный качественный механизм масштабирования интерфейса управляемых форм, который отлично работает и в веб-клиенте. Давайте разберем по шагам, как им воспользоваться:

  1. Откроем форму с отчетом или печатной формой в веб-клиенте.
  2. В верхнем правом углу окна программы найдем кнопку «Сервис и настройки» (она может выглядеть как шестеренка, три точки или три горизонтальные линии в зависимости от версии интерфейса).
  3. В выпадающем меню выберем пункт «Изменить масштаб».
  4. В появившемся окне с помощью удобного ползунка установим комфортный процент отображения (например, 120% или 150%).
  5. Важный нюанс: чтобы пользователю не приходилось настраивать масштаб при каждом входе, нажмем кнопку «Установить для всех». Платформа запишет эти настройки в базу данных на сервере, и при следующих сеансах в браузере интерфейс сразу примет нужный размер.

Вариант 2. Масштабирование средствами браузера (альтернативный способ)

Если пользователю необходимо срочно увеличить мелко написанный текст в отчете, а искать настройки платформы некогда, можно воспользоваться стандартным зумом браузера. Однако здесь нужно соблюдать одно правило:

Перед тем как зажать клавишу Ctrl и прокрутить колесико мыши, необходимо убрать курсор мыши за пределы поля табличного документа. Курсор можно навести на панель разделов, пустую серую область формы или панель открытых окон. В этом случае браузер успешно перехватит событие и увеличит масштаб страницы целиком.

Минус метода: вместе с табличной частью увеличатся все кнопки, меню и заголовки системы, что сократит полезное рабочее пространство на мониторе.

Вариант 3. Программное управление масштабом (для разработчиков 1С)

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

У элемента управляемой формы типа «Поле табличного документа» существует замечательное свойство РежимМасштабированияПросмотра. Мы можем использовать его для принудительного изменения размера отображения таблицы.

Давайте посмотрим на пример кода, который позволяет динамически переключать масштаб табличного документа на форме с помощью кнопок «Увеличить» и «Уменьшить»:


&НаКлиенте
Процедура УвеличитьМасштабТаблицы(Команда)
    
    // Получаем текущий режим масштабирования элемента формы "Результат"
    ТекущийРежим = Элементы.Результат.РежимМасштабированияПросмотра;
    
    Если ТекущийРежим = РежимМасштабированияПросмотра.Мелкий Тогда
        Элементы.Результат.РежимМасштабированияПросмотра = РежимМасштабированияПросмотра.Обычный;
    ИначеЕсли ТекущийРежим = РежимМасштабированияПросмотра.Обычный Тогда
        Элементы.Результат.РежимМасштабированияПросмотра = РежимМасштабированияПросмотра.Крупный;
    КонецЕсли;
    
КонецПроцедуры

&НаКлиенте
Процедура УменьшитьМасштабТаблицы(Команда)
    
    ТекущийРежим = Элементы.Результат.РежимМасштабированияПросмотра;
    
    Если ТекущийРежим = РежимМасштабированияПросмотра.Крупный Тогда
        Элементы.Результат.РежимМасштабированияПросмотра = РежимМасштабированияПросмотра.Обычный;
    ИначеЕсли ТекущийРежим = РежимМасштабированияПросмотра.Обычный Тогда
        Элементы.Результат.РежимМасштабированияПросмотра = РежимМасштабированияПросмотра.Мелкий;
    КонецЕсли;
    
КонецПроцедуры

Используя перечисление РежимМасштабированияПросмотра, мы можем предоставить пользователям веб-клиента удобные кнопки прямо на панели отчета, заменяя отсутствующий жест мыши.

Также важно не путать экранный масштаб с масштабом печати. Если отчет не помещается на лист при выводе из браузера, мы должны использовать свойства самого объекта ТабличныйДокумент:


// Настройка автоматического масштабирования под ширину листа при печати
ТабДок.АвтоМасштаб = Истина;

// Или установка фиксированного масштаба печати в процентах
ТабДок.МасштабПечати = 85;

Эти свойства будут корректно учтены платформой при формировании печатной формы или PDF-файла в веб-клиенте.

Таким образом, хотя прямое масштабирование через Ctrl + Колёсико мыши внутри табличного поля в браузере невозможно из-за ограничений веб-технологий, мы всегда можем использовать штатный механизм изменения масштаба интерфейса «1С» или предусмотреть специализированные кнопки управления масштабом на форме отчета.

← На главную