← На главную
При работе с 1С:Предприятием, особенно при разработке и модификации конфигураций, многие из нас сталкиваются с проблемой некорректного отображения обычных форм (ОФ) на современных мониторах с высоким разрешением (Full HD и выше) и увеличенным масштабом Windows (например, 125%). Давайте подробно разберем, почему возникает эта проблема, какие симптомы она проявляет, и, самое главное, как найти эффективное решение.
Наш коллега столкнулся с ситуацией: после доработок форм на своем ноутбуке с Full HD экраном и масштабом Windows 125%, формы идеально отображаются у него. Однако, после обновления конфигурации на сервере заказчика, у клиентов формы "слетают", то есть не раскрываются полностью, их элементы обрезаются или накладываются друг на друга. При этом у разработчика на его машине формы выглядят абсолютно корректно. Такая ситуация, к сожалению, не редкость и вызывает множество неудобств как у разработчиков, так и у конечных пользователей.
Выясняем причину проблемы: 96 DPI и масштабирование Windows
Основная причина проблем с отображением обычных форм 1С кроется в том, что эти формы изначально разрабатывались с расчетом на стандартное разрешение 96 DPI (точек на дюйм), что соответствует 100% масштабу в операционной системе Windows. Давайте рассмотрим подробнее, что это значит:
-
Разработка в 96 DPI: Платформа 1С:Предприятие версии 8, особенно в части обычных форм, тесно связана с системными параметрами отображения. Если формы создавались или редактировались в среде, где масштаб Windows был установлен на 100% (96 DPI), то их элементы, размеры и привязки будут оптимизированы под этот режим.
-
Масштабирование Windows: На современных HiDPI экранах (таких как Full HD на небольших диагоналях, например, 15.3 дюйма) 100% масштаб делает элементы интерфейса слишком мелкими для комфортной работы. Поэтому пользователи часто увеличивают масштаб Windows до 125%, 150% или даже выше. Windows пытается адаптировать старые приложения, не предназначенные для масштабирования, но не всегда это делает идеально.
-
Ограничения обычных форм: В отличие от управляемых форм, которые появились в более поздних версиях платформы (начиная с 8.3.10) и обладают встроенными механизмами адаптации к различным разрешениям и масштабам, обычные формы гораздо менее гибки. Масштабирование обычных форм осуществляется в основном средствами операционной системы, что часто приводит к погрешностям.
-
Конфликт масштабов: Когда разработчик создает или изменяет форму на своем компьютере с масштабом 125%, платформа 1С может сохранять данные о размерах и расположении элементов с учетом этого масштаба. Если затем эта же форма используется на компьютере клиента с 100% масштабом, или наоборот, возникают расхождения в расчетах размеров и позиций элементов, что приводит к их некорректному отображению. Элементы могут обрезаться, накладываться друг на друга, командные панели могут становиться слишком маленькими, а текст может не умещаться в отведенные границы.
Особенно остро проблема проявляется после доработок или обновлений конфигурации. Как отмечает наш коллега, у него самого формы отображаются идеально, но у клиентов после заливки изменений на сервер, формы начинают "слетать". Это прямое свидетельство того, что среда разработки (с 125% масштабом) влияет на сохраненные параметры формы, которые потом неверно интерпретируются в другой среде (возможно, с 100% масштабом или при других особенностях клиентских машин).
Разбираем симптомы проблемы с отображением форм
Проблемы с некорректным отображением обычных форм могут проявляться по-разному, но всегда приводят к неудобствам в работе. Рассмотрим наиболее частые симптомы:
-
Форма не раскрывается полностью: Это один из самых распространенных симптомов. Часть формы или ее элементы могут быть обрезаны, выйти за пределы видимой области экрана. Пользователи видят только часть информации или функционала, что затрудняет или делает невозможной работу.
-
Элементы накладываются друг на друга: Поля ввода, надписи, кнопки или табличные части могут смещаться и перекрывать друг друга, делая интерфейс нечитаемым и непригодным для использования.
-
Текст обрезается многоточиями: В некоторых случаях текст в полях или заголовках элементов управления может быть укорочен и заканчиваться многоточиями, поскольку не умещается в автоматически рассчитанные размеры элементов.
-
Невозможность растянуть форму в конфигураторе: Разработчик может столкнуться с трудностями при попытке изменить размеры формы или ее элементов в конфигураторе. Например, командная панель может быть ограничена "линиями", которые не позволяют ее растянуть, что указывает на проблемы с привязками или внутренними ограничениями дизайна, усугубляемыми масштабированием. Это подтверждает наш коллега, когда не смог вручную протянуть нижнюю командную панель, так как "там линии стоят".
-
Необходимость постоянного "восстановления положения окна": Пользователям приходится регулярно использовать функцию восстановления положения окна (
Alt+Shift+R), чтобы временно исправить отображение формы. Однако это временное решение, и форма снова может "слететь" при следующем открытии или даже после закрытия и повторного открытия. Клиенты справедливо возмущаются, что вынуждены нажимать эту кнопку в каждом открытом документе.
Все эти симптомы указывают на базовую несовместимость между тем, как формы были разработаны, и тем, как они интерпретируются операционной системой с учетом масштабирования. Особенно критично это, когда разработчик работает в одном масштабе, а пользователи — в другом.
Анализируем влияние привязок элементов на отображение формы
Привязки элементов играют ключевую роль в поведении обычных форм при изменении их размера. В 1С:Предприятии элементы размещаются с привязкой границ к границам формы или других элементов. Это необходимо для того, чтобы элементы корректно отображались при различных размерах формы. Рассмотрим подробнее:
-
Типы привязок: В обычных формах существуют ручные (простые и сложные) и автоматические привязки. Автоматические привязки платформа пытается установить самостоятельно, основываясь на расположении элементов. Ручные привязки дают разработчику больше контроля, но требуют внимательности. Некорректные привязки являются одной из частых причин "сползания" элементов формы.
-
Правила изменения размера элементов: Мы должны помнить, что не все элементы формы изменяют свои размеры одинаково при растягивании формы:
- При горизонтальном растягивании формы: надписи, флажки, кнопки обычно не меняют своих размеров. В то время как поля ввода, табличные поля, командные панели изменяют свой размер, растягиваясь по горизонтали.
- При вертикальном растягивании формы: аналогичные правила действуют, и лишь некоторые элементы могут увеличиваться по вертикали.
- Если в одной строке формы расположены несколько элементов, они, как правило, растягиваются пропорционально доступному пространству.
-
Минимизация ручных привязок: Рекомендуется по возможности минимизировать ручную установку привязок, поскольку автоматические привязки, если они установлены корректно, могут обеспечить более предсказуемое поведение формы при масштабировании. Однако, при работе с 125% масштабом Windows даже автоматические привязки могут вести себя непредсказуемо, так как сама система некорректно масштабирует приложение, и 1С, как следствие, не может точно рассчитать конечное положение элементов.
-
Новый механизм размещения элементов (платформа 8.3.7): В более новых версиях платформы (начиная с 8.3.7) был реализован новый режим работы формы, который отключает растягивание ее элементов по вертикали. Это может быть полезно для форм с небольшим количеством элементов, где их вертикальное растягивание не требуется. Если автоматический режим отключен, тогда платформа будет использовать заданную ширину/высоту поля, а значение 0 означает растягивание до максимально возможного предела. Эти нюансы становятся особенно важны при диагностике проблем, когда "линии" в конфигураторе мешают растянуть элементы.
Понимание работы привязок и их взаимодействия с системным масштабированием крайне важно для предотвращения проблем с отображением форм. Неправильно настроенные привязки в сочетании с неоптимальным масштабом Windows усугубляют ситуацию.
Рассмотрим временные и частичные решения проблемы
Прежде чем перейти к основному решению, давайте рассмотрим несколько временных или частичных мер, которые могут облегчить ситуацию, но не всегда устраняют проблему полностью:
1. Использование функции "Восстановить положение окна" (Alt+Shift+R)
Эта комбинация клавиш (или аналогичная функция через контекстное меню окна) предназначена для восстановления стандартного или последнего корректного положения и размера окна. Пользователи могут нажимать Alt+Shift+R, и форма временно примет корректный вид. Однако, как подтверждает наш коллега, это лишь временная мера. После закрытия и повторного открытия формы, или даже после некоторых действий в ней, форма может снова отобразиться некорректно. Клиентам приходится постоянно применять эту комбинацию, что вызывает раздражение и снижает продуктивность.
Мы должны понимать, что Alt+Shift+R сбрасывает текущие визуальные параметры окна, но не исправляет коренные проблемы с масштабированием или сохраненными привязками формы. Иногда для более устойчивого решения после установки 100% масштаба Windows и выполнения небольшого изменения в форме в конфигураторе требуется перезагрузка компьютера.
2. Рекомендация клиенту установить 125% масштаб
Если разработчик работает с масштабом 125%, и формы корректно отображаются у него, может возникнуть идея порекомендовать клиенту также установить 125% масштаб в Windows. Теоретически, это могло бы синхронизировать условия отображения. Однако, этот подход имеет ряд ограничений:
-
Не всегда применимо: У клиента может быть другой тип монитора, другое разрешение или свои предпочтения по масштабу.
-
Общая проблема: Если формы изначально разработаны под 96 DPI, то даже при установке 125% масштаба у клиента, они все равно могут отображаться некорректно из-за базовой проблемы масштабирования обычных форм самой операционной системой, которая может быть разной на разных машинах.
-
Неудобство для клиента: Принуждение клиента к определенным настройкам масштаба Windows может быть неудобным, особенно если другие приложения клиента работают некорректно при 125% масштабе.
3. Настройка совместимости в Windows
Для программ, использующих старые версии конфигураций на обычных формах, мы можем попробовать изменить настройки масштабирования средствами операционной системы Windows. Это делается через свойства ярлыка запуска 1С:
- Найдите ярлык, с помощью которого запускается 1С:Предприятие.
- Кликните по нему правой кнопкой мыши и выберите "Свойства".
- Перейдите на вкладку "Совместимость".
- Нажмите кнопку "Изменить параметры высокого DPI" или "Параметры высокого DPI".
- Установите флажок "Переопределить режим масштабирования высокого разрешения".
- В выпадающем списке выберите пункт "Приложение".
Этот метод может помочь улучшить отображение текста на HiDPI дисплеях, предотвращая его размытие или некорректное масштабирование самой Windows. Он заставляет приложение самостоятельно управлять своим масштабированием, что в случае с 1С на обычных формах может быть более предсказуемым, чем попытки Windows масштабировать его. Однако, это не гарантирует идеального решения для всех элементов формы.
4. Использование неродного разрешения экрана
Как временное решение, особенно если разработчик не хочет постоянно работать со 100% масштабом, можно попробовать установить на ноутбуке неродное разрешение экрана, более низкое, например, 1366х768. Интерфейс при этом будет выглядеть более крупным, что может сделать работу более комфортной, не прибегая к системному масштабированию Windows. Однако, это также является компромиссом, поскольку изображение на неродном разрешении может быть менее четким, а текст слегка размытым. Кроме того, это не решает корневую проблему, связанную с тем, как 1С сохраняет параметры форм.
Все эти методы являются скорее "костылями" и не дают универсального, надежного решения. Они могут временно облегчить симптомы, но не устраняют причину. Для достижения стабильного и предсказуемого отображения форм нам придется пойти на более фундаментальные изменения.
Основное и наиболее эффективное решение: установка 100% масштаба Windows
После рассмотрения всех временных мер, мы приходим к главному и наиболее надежному решению проблемы некорректного отображения обычных форм 1С на HiDPI экранах: разработка и модификация форм должна выполняться при 100% масштабе Windows на рабочем месте разработчика.
Почему это работает?
-
Соответствие стандарту 96 DPI: Как мы уже выяснили, обычные формы 1С изначально проектировались и оптимизированы для разрешения 96 DPI, что соответствует 100% масштабу в операционной системе Windows. Когда разработчик работает в этом режиме, платформа 1С сохраняет размеры, координаты и привязки элементов именно так, как они задуманы, без вмешательства механизмов масштабирования Windows.
-
Устранение погрешностей масштабирования ОС: При установке 100% масштаба, Windows не пытается "умно" масштабировать приложение 1С. Оно отображается "пиксель в пиксель" так, как его видит сама платформа. Это исключает большинство погрешностей, которые возникают при масштабировании интерфейса средствами операционной системы, когда 1С работает при 125% или другом увеличенном масштабе.
-
Предсказуемое поведение форм у пользователей: Если формы разработаны при 100% масштабе, они будут гораздо более предсказуемо вести себя на машинах пользователей, независимо от их индивидуальных настроек масштабирования (хотя наилучшие результаты будут при 100% масштабе у пользователя). Даже если у пользователя установлен масштаб 125%, формы, разработанные на 100% масштабе, обычно отображаются значительно лучше, чем формы, разработанные на 125%.
Наш коллега подтверждает эффективность этого метода: "Помогло) Шрифт конечно вырвиглаз, но видимо тут уже ничего не сделаешь...". Это ключевой момент. Установка 100% масштаба решила проблему с "слетающими" формами у клиентов.
Компромиссы и последствия
Хотя 100% масштаб является наиболее эффективным решением, он сопряжен с определенными неудобствами, особенно для разработчиков, работающих на ноутбуках с HiDPI экранами:
-
Мелкий шрифт: На Full HD экранах с небольшой диагональю (например, 15.3 дюйма) 100% масштаб приводит к тому, что все элементы интерфейса Windows и приложений (включая конфигуратор 1С) становятся очень мелкими. Это может быть "вырвиглаз", как выразился наш коллега, и вызывать дискомфорт, быструю утомляемость глаз.
-
Необходимость адаптации: Разработчику придется привыкать к мелкому шрифту и элементам. Возможно, потребуется приобрести внешний монитор большего размера, чтобы сохранить 100% масштаб и при этом иметь достаточное рабочее пространство.
Несмотря на эти неудобства, для обеспечения стабильной и корректной работы обычных форм 1С у клиентов, разработка в 100% масштабе Windows является критически важной рекомендацией. Это гарантирует, что формы будут сохранять свои размеры и пропорции в соответствии с тем, как платформа 1С их интерпретирует без дополнительных искажений от операционной системы.
Принципы разработки обычных форм для минимизации проблем
Помимо установки 100% масштаба Windows, существуют дополнительные принципы, которые помогут нам разрабатывать более устойчивые и предсказуемые обычные формы:
1. Компактность формы
Один из основных принципов разработки — это компактность. Верхняя и нижняя командные панели, а также ограничивающие линии задают рабочее пространство формы, где размещаются поля. Мы должны стараться использовать это пространство максимально эффективно, избегая излишне больших отступов и пустых областей, которые могут "схлопнуться" или вызвать проблемы при масштабировании.
Разрабатывая форму, всегда помните, что она должна быть функциональной и при этом не перегруженной элементами. Если информации много, возможно, стоит рассмотреть ее группировку или размещение на нескольких вкладках.
2. Правильное использование привязок
Привязки являются мощным инструментом, но их неправильное использование может привести к проблемам:
-
Минимизация ручных привязок: Мы должны стремиться к минимизации ручной установки привязок. Если автоматические привязки справляются с задачей, лучше доверять им. Ручные привязки следует использовать только тогда, когда требуется специфическое поведение элемента при изменении размера формы.
-
Тестирование привязок: В конфигураторе мы можем использовать режим просмотра формы "Форма - Проверить". В этом режиме можно изменять размер формы мышью и отслеживать, как ведут себя элементы. Это позволяет нам выявить потенциальные проблемы с привязками до того, как форма попадет к пользователям. Если при растягивании формы элементы "сползают" или обрезаются, это признак некорректных привязок.
-
Ограничивающие линии: Если мы сталкиваемся с ситуацией, когда "линии стоят" и не дают растянуть командную панель или другие элементы, это, скорее всего, указывает на наличие ограничивающих линий рабочего пространства формы, имеющих фиксированный отступ. В этом случае нам нужно пересмотреть общую структуру формы и, возможно, привязки этих ограничивающих элементов, чтобы предоставить больше места для растягивания.
3. Использование отступов
При размещении полей и элементов на форме рекомендуется использовать три типа отступов:
-
Одинарный отступ: Используем для логически связанной информации, когда элементы должны быть расположены близко друг к другу.
-
Двойной отступ: Применяем для выделения групп полей, чтобы визуально отделить один блок информации от другого.
-
Без отступа: Используем в тех случаях, когда элемент должен занять все доступное пространство, например, для табличных полей, которые должны растягиваться на всю ширину или высоту.
Правильные отступы не только улучшают читаемость и эргономику формы, но и помогают платформе 1С более корректно управлять размещением элементов при различных условиях отображения.
4. Учет нового механизма размещения элементов (платформа 8.3.7)
Важно помнить, что в более новых версиях платформы 1С:Предприятие (начиная с 8.3.7) был реализован новый режим работы формы, который отключает растягивание ее элементов по вертикали. Это может быть как преимуществом, так и проблемой в зависимости от формы:
-
Для форм с небольшим количеством элементов: Этот режим может быть полезен, так как он предотвращает нежелательное растягивание элементов, делая форму более стабильной.
-
Для форм с автоматическим режимом: Если автоматический режим отключен, тогда платформа будет использовать заданную ширину/высоту поля. Значение
0 для ширины или высоты элемента в свойствах означает, что элемент должен растягиваться до максимально возможного предела. Мы должны внимательно проверять эти настройки, особенно если сталкиваемся с проблемами растягивания.
Понимание этих нюансов платформы позволяет нам более тонко настраивать поведение форм и предотвращать их некорректное отображение, особенно когда речь идет о вертикальном масштабировании.
Выводы: Курс на управляемые формы
Подводя итог, мы видим, что для обычных форм 1С идеальное решение для работы на HiDPI экранах с масштабированием Windows без компромиссов в удобстве отображения крайне сложно достижимо. Наиболее надежным способом остается разработка и использование форм при 100% масштабе Windows на рабочем месте разработчика, несмотря на то, что это может сделать шрифт мелким. Это решение, хотя и требует привыкания, гарантирует, что формы будут вести себя предсказуемо у конечных пользователей.
Однако, для долгосрочной перспективы и создания более современных, адаптивных и удобных интерфейсов, 1С рекомендует переходить на управляемые формы. Управляемые формы, появившиеся в более поздних версиях платформы, изначально спроектированы с учетом различных разрешений экрана и масштабов, предлагая гораздо большую гибкость и адаптивность к современным рабочим станциям. Если у нас есть возможность, мы должны постепенно переводить функционал на управляемые формы, чтобы избежать подобных проблем в будущем и обеспечить комфортную работу для пользователей на любом оборудовании.
Надеемся, что этот подробный анализ и предложенные решения помогут вам справиться с проблемами отображения обычных форм в 1С:Предприятии и обеспечат стабильную работу вашей конфигурации.