Что делать, если после обновления платформы 1С до версии 8.3.16 «поплыли» формы и сбились интерфейсы?

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

Ситуация, когда после планового (или внезапного) обновления технологической платформы 1С:Предприятие интерфейс программы начинает вести себя непредсказуемо, знакома многим администраторам и разработчикам. Особенно остро эта проблема проявилась в ветке 8.3.16, в частности в релизе 8.3.16.1063. Пользователи сталкиваются с тем, что элементы форм самопроизвольно меняют размеры, кнопки исчезают в подменю Еще, а между частями формы (например, шапкой и табличной частью) при каждом открытии увеличиваются пустые отступы. Рассмотрим подробно, почему это происходит и как вернуть работоспособность интерфейса.

Выясним причину: почему «плывут» формы в релизе 8.3.16

Проанализируем техническую составляющую проблемы. В версии 8.3.16 компания 1С внедрила существенные изменения в графическую подсистему платформы. Был осуществлен переход на новые библиотеки рендеринга шрифтов и графических элементов (Cairo и HarfBuzz). Это было сделано для унификации отображения интерфейса на разных операционных системах (Windows, Linux, macOS). Однако новая реализация привела к конфликтам с накопленными пользовательскими настройками форм и старыми алгоритмами расчета размеров.

Основные факторы возникновения ошибки:

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

Способ 1: Откат платформы до стабильной версии

Если проблема носит массовый характер и мешает оперативной работе пользователей, самым быстрым и надежным решением будет откат на предыдущую стабильную версию. Разберем этот процесс по шагам:

  1. Деинсталлируем текущую версию платформы 8.3.16.x с сервера и клиентских машин.
  2. Установим проверенную версию из ветки 8.3.15 (например, 8.3.15.1830) или более поздний исправленный релиз 16-й ветки (выше 8.3.16.1148, где многие ошибки рендеринга были устранены).
  3. Важно убедиться, что в настройках запуска базы (в окне списка баз) в поле Версия платформы не прописана жестко версия 8.3.16.

Способ 2: Тотальная очистка кэша и настроек форм

Часто проблема кроется в том, что платформа пытается применить старые (уже искаженные) настройки отображения к новому движку. Простая очистка папок Local и Roaming может не помочь, так как настройки форм хранятся и в системных таблицах самой базы данных.

Рассмотрим алгоритм глубокой очистки:

  1. Закроем все сеансы пользователей.
  2. Удалим содержимое папок кэша на клиентских ПК:
    %AppData%\1C\1cv8
    %LocalAppData%\1C\1cv8
  3. Выполним сброс настроек формы непосредственно в пользовательском режиме. Для этого нужно зайти в меню Изменить форму и выбрать команду Установить стандартные настройки.
  4. Если настройки не сохраняются (после перезахода форма снова «плывет»), необходимо воспользоваться административной обработкой для удаления настроек всех пользователей (хранилище системных настроек).

Способ 3: Реструктуризация конфигурации

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

Вариант А: Тестирование и исправление (ТиИ)

Запустим конфигуратор, перейдем в меню Администрирование — Тестирование и исправление. Выберем пункт Реструктуризация таблиц информационной базы. Обязательно создайте резервную копию перед этой операцией! Платформа пересоберет внутренние структуры, что может исправить ошибки позиционирования элементов.

Вариант Б: Метод «фиктивного изменения»

Иногда помогает заставить платформу думать, что конфигурация существенно изменилась. Рассмотрим пример с константой:

  1. Создадим в конфигураторе новую константу, например, ТехническаяКонстанта с типом Строка.
  2. Выполним обновление конфигурации базы данных (F7). Платформа запустит процесс реструктуризации.
  3. Затем удалим эту константу и снова обновим базу.

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

Способ 4: Настройка параметров запуска и High DPI

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

В ярлыке запуска 1С (или в дополнительных параметрах запуска в списке баз) добавим ключ:

/DisableHighDpiAware

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

Способ 5: Программное изменение форм

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

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


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Установка жестких размеров для критичных элементов
    Элементы.ГруппаШапка.РастягиватьПоГоризонтали = Истина;
    Элементы.ТабличнаяЧастьТовары.Высота = 10; 
КонецПроцедуры

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

Резюме

Подведем итог: если вы столкнулись с «плывущими» формами на 8.3.16.1063, не спешите перерисовывать формы вручную. Скорее всего, вы имеете дело с системным багом. Рекомендуемая последовательность действий: сначала попробуйте сбросить настройки формы к стандартным и очистить кэш. Если это не помогает — выполните реструктуризацию через ТиИ. Если и это не дало результата — откатывайте платформу до версии 8.3.15 или обновляйте до актуальных патчей ветки 8.3.17/8.3.18, где ошибки графического движка были исправлены.

← На главную