Почему искажаются обычные формы после обновления платформы 1С и как это исправить?

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

При переходе на новые релизы платформы 1С:Предприятие (начиная с ветки 8.3.10 и выше) многие разработчики и системные администраторы сталкиваются с неприятной проблемой: в конфигурациях на обычных формах (например, УПП 1.3, УТ 10.3, КА 1.1, ЗУП 2.5) начинают некорректно отображаться документы и справочники. Элементы управления съезжают, шапки табличных частей сужаются, выпадающие списки открываются со смещением, а границы окон ведут себя непредсказуемо при изменении размеров.

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

Причины сбоя геометрии и привязок форм

Проанализируем механизм работы графической подсистемы платформы. Начиная с версии 8.3.10, разработчики платформы существенно переработали механизм поддержки дисплеев с высокой плотностью пикселей (High DPI) для современного интерфейса «Такси» (управляемые формы). Однако старый графический движок толстого клиента обычного приложения не рассчитан на динамическую трансляцию координат.

В результате возникают следующие конфликты:

  1. Нестандартный системный масштаб: Если в параметрах экрана Windows установлен масштаб 125%, 150% или выше, старый движок обычных форм некорректно преобразует логические координаты привязок элементов в физические пиксели экрана.
  2. Кэширование сбойной геометрии в базе данных: При первом открытии формы с некорректным DPI платформа рассчитывает искаженные координаты и сохраняет их во внутреннем хранилище пользовательских настроек информационной базы (ХранилищеСистемныхНастроек). Поэтому даже после очистки локального кэша на диске при повторном открытии окна форма вновь принимает искаженный вид.
  3. Редактирование формы разработчиком на мониторе с High DPI: Если программист сохраняет изменения обычной формы в Конфигураторе при включенном масштабировании Windows 125%, линии привязок фиксируются с погрешностью, которая ломает отображение у конечных пользователей.

Способ 1. Переопределение режима масштабирования в свойствах Windows

Рассмотрим наиболее быстрый и удобный способ исправления ситуации на клиентских рабочих станциях без необходимости принудительно снижать системный масштаб или менять разрешение экрана (что часто приводит к размытию шрифтов).

Выполним следующие шаги настройки на компьютере пользователя:

  1. Закроем все запущенные сеансы «1С:Предприятие».
  2. Нажмем правой кнопкой мыши по ярлыку запуска 1С (или напрямую по файлу 1cv8.exe в каталоге установки платформы) и выберем пункт Свойства.
  3. Перейдем на вкладку Совместимость и нажмем кнопку Изменить параметры высокого DPI.
  4. Установим флаг Переопределите режим масштабирования высокого разрешения.
  5. В выпадающем списке «Масштабирование выполняется» выберем вариант Система (System) либо Система (расширенная).
  6. Нажмем ОК и применим внесенные изменения.

При таком подходе операционная система берет масштабирование окна приложения полностью на себя, а платформа 1С считает, что работает в стандартном разрешении 96 DPI (100%). В результате все привязки и элементы обычных форм позиционируются корректно.

Способ 2. Очистка сохраненных пользовательских настроек геометрии

Если после настройки масштабирования форма продолжает открываться криво, необходимо удалить накопленные сбойные настройки окна из информационной базы. Обычного удаления папок из AppData\Local\1C и AppData\Roaming\1C в этом случае недостаточно.

Разберем варианты сброса настроек:

  1. Через интерфейс программы: Открыв проблемную форму, нажмем кнопку системного меню окна или меню Действия и выберем пункт Восстановить положение окна.
  2. Сброс настроек пользователя: Воспользуемся стандартным меню Сервис -> Настройки пользователя (или административной обработкой «Управление настройками пользователей») и очистим сохраненные настройки положения форм для проблемного пользователя.
  3. Программная очистка: При необходимости сбросить настройки программно можно воспользоваться объектом платформы ХранилищеСистемныхНастроек:
    
    // Пример программного удаления настроек формы
    КлючОбъекта = "Документ.ЗаказПокупателя.Форма.ФормаДокумента/ПоложениеОкна";
    ХранилищеСистемныхНастроек.Удалить(КлючОбъекта, "", ИмяПользователя);
    

Способ 3. Явное указание версии платформы для информационной базы

Часто на одном сервере или предприятии одновременно эксплуатируются как современные конфигурации на управляемых формах (например, БП 3.0, ЗУП 3.1), требующие свежей версии платформы, так и исторические базы на обычных формах (УПП 1.3, УТ 10.3). В этом случае целесообразно разделить запуск разных конфигураций под разными релизами платформы.

Разберем порядок настройки:

  1. Установим на компьютере две версии платформы: стабильную для обычных форм (например, 8.3.8.хххх или 8.3.9.2170) и актуальную для управляемых форм.
  2. В окне запуска 1С выделим информационную базу на обычных формах и нажмем кнопку Изменить.
  3. На последней странице параметров в поле Версия 1С:Предприятия укажем точный номер стабильного релиза, например: 8.3.9.2170.

Стартер 1С автоматически запустит для этой базы исполняемый файл из соответствующего каталога, что гарантирует стабильную отрисовку интерфейса без конфликтов.

Способ 4. Доработка проблемных форм в Конфигураторе

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

Обратим внимание на следующие правила:

  1. Стандартный масштаб разработчика: При разработке и редактировании обычных форм на компьютере программиста масштаб Windows обязательно должен быть установлен в значение 100%.
  2. Диагностика конфликтов: В меню Конфигуратора Форма -> Проверить протестируем поведение элементов при сжатии и растягивании. Конфликтующие взаимные привязки подсветятся красным цветом.
  3. Группировка элементов в панели: Если сложная группа реквизитов регулярно съезжает, сгруппируем их внутри элемента управления Панель с прозрачными или скрытыми границами. Панель привязывается к границам формы, а элементы внутри нее — к краям самой панели, что полностью исключает эффект наложения элементов друг на друга.
← На главную