Как настроить экранный масштаб печатных форм в управляемом приложении 1С, чтобы они помещались по ширине?

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

Переход с обычных форм на управляемое приложение (интерфейс «Такси») часто сопровождается дискомфортом пользователей из-за изменения визуального восприятия печатных форм. Проблема, при которой широкая табличная часть не помещается в экран, а шрифт одного и того же кегля (например, Arial 8) выглядит в управляемом приложении значительно крупнее, чем в классическом, имеет под собой четкие технические причины. В рамках данной статьи мы подробно разберем, почему это происходит, и проанализируем все доступные методы решения — от простых пользовательских настроек до программной манипуляции объектами платформы.

Почему масштаб в управляемом приложении отличается от обычных форм?

Рассмотрим первопричину проблемы. В обычном приложении 1С (версии 8.2 и ранее) для отрисовки интерфейса использовался стандартный графический интерфейс Windows — GDI. В управляемом приложении, начиная с версии платформы 8.3, архитектура построения форм изменилась: теперь это веб-технологии. Движок (в зависимости от версии платформы это может быть WebKit или Chromium) иначе интерпретирует плотность пикселей и межстрочные интервалы.

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

Метод 1: Использование горячих клавиш и интерактивное управление

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

Также проанализируем возможность использования системного меню. Начиная с последних версий платформы 8.3, пользователю доступна команда «Изменить масштаб» в меню «Сервис и настройки». Рассмотрим алгоритм действий:

  1. Нажимаем на кнопку меню (три горизонтальные полоски или «шестеренка» в заголовке окна).
  2. Выбираем пункт «Изменить масштаб».
  3. С помощью ползунка устанавливаем комфортный процент (например, 80% или 90%).
  4. Если необходимо, чтобы все формы приложения открывались в таком масштабе, нажимаем кнопку «Установить для всех».

Важно помнить, что этот масштаб накладывается на тот, который задан программистом в конфигураторе. Если в конфигураторе стоит 110%, а пользователь выбрал 50%, итоговый результат составит 55% от реального размера.

Метод 2: Программное управление масштабом формы

Если вы как разработчик хотите, чтобы форма печати открывалась в уже уменьшенном виде, следует использовать программные свойства. Выясним причину, по которой обычное свойство Автомасштаб не всегда помогает. Свойство ТабДок.Автомасштаб = Истина отвечает за расчет ширины колонок при выводе на бумагу (принтер), но не всегда корректно отрабатывает именно для экранного отображения в момент открытия формы.

Начиная с версии платформы 8.3.10, мы можем управлять масштабом всей управляемой формы программно. Для этого используется свойство Масштаб объекта ФормаКлиентскогоПриложения. Посмотрим на пример кода, который можно разместить в процедуре ПриОткрытии или после формирования табличного документа:


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    // Устанавливаем масштаб формы в 90% для лучшей вместимости
    ЭтаФорма.Масштаб = 90; 
КонецПроцедуры

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

Метод 3: Переход в компактный режим отображения

Проанализируем ситуацию, когда пользователю в принципе не нравится «крупный» интерфейс «Такси». Платформа предоставляет возможность переключить приложение в компактный режим. Это глобально уменьшает отступы и размеры элементов, делая интерфейс более плотным, похожим на классические формы 8.2.

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


Настройки = Новый НастройкиКлиентскогоПриложения;
Настройки.ВариантМасштабаФорм = ВариантМасштабаФорм.Компактный;
ХранилищеОбщихНастроек.Сохранить("ОбщиеНастройкиУзла", "НастройкиКлиентскогоПриложения", Настройки);

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

Метод 4: Оптимизация интерфейсного пространства

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

  1. Перенос панелей: Посоветуйте пользователям перенести панель разделов наверх или вовсе скрыть заголовки (оставив только иконки). Это освободит значительную часть ширины экрана.
  2. Скрытие панели инструментов: При просмотре печатной формы можно временно сворачивать боковую панель функций.
  3. Использование мониторов с современным разрешением: Как бы банально это ни звучало, интерфейс «Такси» рассчитан на разрешение 1920х1080 и выше. На старых мониторах 1280х1024 работа с широкими формами всегда будет требовать дополнительной настройки.

Метод 5: Корректировка макета под управляемые формы

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

Рассмотрим, как можно программно «сжать» колонки при выводе документа, если мы понимаем, что работаем в тонком клиенте:


// Пример уменьшения ширины всех колонок на 10%
Для НомерКолонки = 1 По ТабДок.ШиринаТаблицы Цикл
    ТекущаяШирина = ТабДок.Область(1, НомерКолонки).ШиринаКолонки;
    ТабДок.Область(1, НомерКолонки).ШиринаКолонки = ТекущаяШирина * 0.9;
КонецЦикла;

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

Дополнительные настройки параметров печати

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

Подводя итог, можно сказать, что «раздутость» форм в 1С 8.3 — это плата за кроссплатформенность и работу в веб-браузерах. Однако, используя комбинацию программной настройки свойства Масштаб, включение Компактного режима и небольшую оптимизацию макетов, можно добиться комфортной работы пользователей даже с самыми широкими печатными формами.

← На главную