Ситуация, когда после планового (или внезапного) обновления технологической платформы 1С:Предприятие интерфейс программы начинает вести себя непредсказуемо, знакома многим администраторам и разработчикам. Особенно остро эта проблема проявилась в ветке 8.3.16, в частности в релизе 8.3.16.1063. Пользователи сталкиваются с тем, что элементы форм самопроизвольно меняют размеры, кнопки исчезают в подменю Еще, а между частями формы (например, шапкой и табличной частью) при каждом открытии увеличиваются пустые отступы. Рассмотрим подробно, почему это происходит и как вернуть работоспособность интерфейса.
Проанализируем техническую составляющую проблемы. В версии 8.3.16 компания 1С внедрила существенные изменения в графическую подсистему платформы. Был осуществлен переход на новые библиотеки рендеринга шрифтов и графических элементов (Cairo и HarfBuzz). Это было сделано для унификации отображения интерфейса на разных операционных системах (Windows, Linux, macOS). Однако новая реализация привела к конфликтам с накопленными пользовательскими настройками форм и старыми алгоритмами расчета размеров.
Основные факторы возникновения ошибки:
Если проблема носит массовый характер и мешает оперативной работе пользователей, самым быстрым и надежным решением будет откат на предыдущую стабильную версию. Разберем этот процесс по шагам:
Версия платформы не прописана жестко версия 8.3.16.Часто проблема кроется в том, что платформа пытается применить старые (уже искаженные) настройки отображения к новому движку. Простая очистка папок Local и Roaming может не помочь, так как настройки форм хранятся и в системных таблицах самой базы данных.
Рассмотрим алгоритм глубокой очистки:
%AppData%\1C\1cv8
%LocalAppData%\1C\1cv8
Изменить форму и выбрать команду Установить стандартные настройки.Проанализируем ситуацию, когда формы «плывут» только в тех объектах, которые правились вручную в конфигураторе. В этом случае может помочь принудительная реструктуризация форм платформой. Выясним, как это сделать без потери данных:
Вариант А: Тестирование и исправление (ТиИ)
Запустим конфигуратор, перейдем в меню Администрирование — Тестирование и исправление. Выберем пункт Реструктуризация таблиц информационной базы. Обязательно создайте резервную копию перед этой операцией! Платформа пересоберет внутренние структуры, что может исправить ошибки позиционирования элементов.
Вариант Б: Метод «фиктивного изменения»
Иногда помогает заставить платформу думать, что конфигурация существенно изменилась. Рассмотрим пример с константой:
ТехническаяКонстанта с типом Строка.Этот метод заставляет 1С пересчитать многие внутренние параметры метаданных, включая описания форм.
Посмотрим на ситуацию со стороны системных настроек. Если формы искажаются из-за масштабирования Windows, мы можем принудительно отключить вмешательство платформы в этот процесс. Разберем использование параметра запуска:
В ярлыке запуска 1С (или в дополнительных параметрах запуска в списке баз) добавим ключ:
/DisableHighDpiAware
Этот параметр заставляет приложение игнорировать настройки масштабирования высокого разрешения, что часто возвращает формы к «классическому» виду, хотя шрифты могут выглядеть менее четкими.
Для разработчиков наиболее правильным долгосрочным решением будет минимизация визуальных изменений в самом редакторе форм конфигуратора. Проанализируем рекомендации экспертов:
Вместо того чтобы двигать элементы мышкой в конфигураторе, попробуем управлять ими программно в процедуре ПриСозданииНаСервере. Например, установка ширины или видимости элементов через код:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Установка жестких размеров для критичных элементов
Элементы.ГруппаШапка.РастягиватьПоГоризонтали = Истина;
Элементы.ТабличнаяЧастьТовары.Высота = 10;
КонецПроцедуры
Программное управление интерфейсом гораздо устойчивее к сменам релизов платформы, так как оно переопределяет настройки, считанные из кэша или метаданных, в момент инициализации формы.
Подведем итог: если вы столкнулись с «плывущими» формами на 8.3.16.1063, не спешите перерисовывать формы вручную. Скорее всего, вы имеете дело с системным багом. Рекомендуемая последовательность действий: сначала попробуйте сбросить настройки формы к стандартным и очистить кэш. Если это не помогает — выполните реструктуризацию через ТиИ. Если и это не дало результата — откатывайте платформу до версии 8.3.15 или обновляйте до актуальных патчей ветки 8.3.17/8.3.18, где ошибки графического движка были исправлены.