Переход с обычных форм на управляемое приложение (интерфейс «Такси») часто сопровождается дискомфортом пользователей из-за изменения визуального восприятия печатных форм. Проблема, при которой широкая табличная часть не помещается в экран, а шрифт одного и того же кегля (например, Arial 8) выглядит в управляемом приложении значительно крупнее, чем в классическом, имеет под собой четкие технические причины. В рамках данной статьи мы подробно разберем, почему это происходит, и проанализируем все доступные методы решения — от простых пользовательских настроек до программной манипуляции объектами платформы.
Рассмотрим первопричину проблемы. В обычном приложении 1С (версии 8.2 и ранее) для отрисовки интерфейса использовался стандартный графический интерфейс Windows — GDI. В управляемом приложении, начиная с версии платформы 8.3, архитектура построения форм изменилась: теперь это веб-технологии. Движок (в зависимости от версии платформы это может быть WebKit или Chromium) иначе интерпретирует плотность пикселей и межстрочные интервалы.
Интерфейс «Такси» изначально проектировался как дружелюбный к сенсорному вводу. Это означает наличие увеличенных отступов между элементами, более крупные кнопки и «раздутые» шрифты. Когда мы выводим стандартный табличный документ на экран в интерфейсе «Такси», платформа применяет к нему общие правила масштабирования веб-движка, что и приводит к горизонтальной прокрутке там, где раньше форма идеально вписывалась в экран.
Для быстрой оценки информации перед печатью разберем самый простой способ, доступный любому пользователю. В окне печатной формы (в табличном документе) работает стандартная логика масштабирования веб-браузеров. Посмотрим на комбинацию Ctrl + колесо мышки. Это позволяет мгновенно уменьшить или увеличить масштаб отображения конкретной формы, не заходя в настройки.
Также проанализируем возможность использования системного меню. Начиная с последних версий платформы 8.3, пользователю доступна команда «Изменить масштаб» в меню «Сервис и настройки». Рассмотрим алгоритм действий:
Важно помнить, что этот масштаб накладывается на тот, который задан программистом в конфигураторе. Если в конфигураторе стоит 110%, а пользователь выбрал 50%, итоговый результат составит 55% от реального размера.
Если вы как разработчик хотите, чтобы форма печати открывалась в уже уменьшенном виде, следует использовать программные свойства. Выясним причину, по которой обычное свойство Автомасштаб не всегда помогает. Свойство ТабДок.Автомасштаб = Истина отвечает за расчет ширины колонок при выводе на бумагу (принтер), но не всегда корректно отрабатывает именно для экранного отображения в момент открытия формы.
Начиная с версии платформы 8.3.10, мы можем управлять масштабом всей управляемой формы программно. Для этого используется свойство Масштаб объекта ФормаКлиентскогоПриложения. Посмотрим на пример кода, который можно разместить в процедуре ПриОткрытии или после формирования табличного документа:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// Устанавливаем масштаб формы в 90% для лучшей вместимости
ЭтаФорма.Масштаб = 90;
КонецПроцедуры
Обратите внимание, что изменение масштаба формы повлечет за собой и уменьшение размеров кнопок командной панели. Если вам нужно уменьшить только содержимое табличного документа, этот метод может быть избыточным, но для «вписывания» широких отчетов он является самым эффективным.
Проанализируем ситуацию, когда пользователю в принципе не нравится «крупный» интерфейс «Такси». Платформа предоставляет возможность переключить приложение в компактный режим. Это глобально уменьшает отступы и размеры элементов, делая интерфейс более плотным, похожим на классические формы 8.2.
Для включения этого режима программно (например, при начале работы системы) можно использовать следующий подход:
Настройки = Новый НастройкиКлиентскогоПриложения;
Настройки.ВариантМасштабаФорм = ВариантМасштабаФорм.Компактный;
ХранилищеОбщихНастроек.Сохранить("ОбщиеНастройкиУзла", "НастройкиКлиентскогоПриложения", Настройки);
После применения этих настроек все табличные документы будут выглядеть более аккуратно, а шрифты станут визуально меньше за счет сокращения межстрочных интервалов.
Зачастую печатная форма не помещается в экран из-за того, что рабочая область «съедается» панелями интерфейса. В управляемом приложении по умолчанию панель разделов может находиться слева, а панель открытых окон — сверху. Рассмотрим варианты оптимизации экранного пространства:
1920х1080 и выше. На старых мониторах 1280х1024 работа с широкими формами всегда будет требовать дополнительной настройки.Разберем ситуацию, когда изменение системных настроек невозможно. В этом случае придется править сам макет печатной формы. Поскольку движок WebKit отображает шрифты иначе, разработчики часто идут на создание отдельных макетов для УФ или программную корректировку ширин колонок.
Рассмотрим, как можно программно «сжать» колонки при выводе документа, если мы понимаем, что работаем в тонком клиенте:
// Пример уменьшения ширины всех колонок на 10%
Для НомерКолонки = 1 По ТабДок.ШиринаТаблицы Цикл
ТекущаяШирина = ТабДок.Область(1, НомерКолонки).ШиринаКолонки;
ТабДок.Область(1, НомерКолонки).ШиринаКолонки = ТекущаяШирина * 0.9;
КонецЦикла;
Также рекомендуется в макетах для управляемого приложения использовать шрифт Arial размером 7 или 7.5 вместо стандартного 8. Это позволит сохранить визуальную преемственность с отчетами из старых конфигураций (БП 2.0 или УПП).
Не забудем про встроенные механизмы работы с табличным документом. Для того чтобы платформа старалась вписать документ в экран при предварительном просмотре, важно правильно настроить объект ТабличныйДокумент перед выводом:
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; для широких форм.ТабДок.Автомасштаб = Истина;. Хотя мы выяснили, что это больше влияет на печать, в режиме предпросмотра это заставляет алгоритм пересчитывать границы документа более корректно.ФиксацияСлева. Если форма очень широкая, зафиксируйте ключевые колонки (например, «Номенклатура»), чтобы при использовании горизонтальной прокрутки пользователь не терял контекст строки.Подводя итог, можно сказать, что «раздутость» форм в 1С 8.3 — это плата за кроссплатформенность и работу в веб-браузерах. Однако, используя комбинацию программной настройки свойства Масштаб, включение Компактного режима и небольшую оптимизацию макетов, можно добиться комфортной работы пользователей даже с самыми широкими печатными формами.