Каждый разработчик 1С рано или поздно сталкивается с загадочным поведением платформы после выполнения динамического обновления (также известного в сообществе как «демоническое»). Одной из самых неприятных визуальных проблем является внезапное искажение внешнего вида элементов форм. Вместо привычных аккуратных рамок со скругленными углами пользователи видят грубые, толстые черные прямоугольники в стиле Windows Classic (в обычных формах, например, в УПП) или даже ярко-розовые (пурпурные) заливки окон и групп (в управляемых формах, таких как ERP, КА или УТ).
В этой статье мы подробно разберем, почему возникает этот сбой, заглянем во внутренние механизмы платформы 1С:Предприятие 8.3 и изучим пошаговые инструкции по исправлению и профилактике этой проблемы.
Давайте проанализируем, откуда берется эта визуальная «грязь» и почему платформа заменяет стандартное оформление на системный fallback-дизайн. Начиная с версии платформы 8.3.7, разработчики изменили логику отрисовки рамок элементов управления (полей ввода, табличных частей, кнопок). Если раньше цвет рамки по умолчанию жестко привязывался к предопределенному значению Стиль: Рамка, то в более новых релизах значение по умолчанию было изменено на Авто.
Когда вы выполняете динамическое обновление информационной базы, в кэше сервера приложений 1С и локальном кэше клиентских компьютеров часто возникает рассинхронизация версий метаданных. В момент обращения клиента к измененной форме происходит передача XML-пакета с описанием структуры интерфейса от сервера к клиенту. По причине зарегистрированного бага платформы (в частности, зарегистрированной ошибки 10214660) процесс десериализации XML-данных дает сбой:
Авто, а реальное значение цвета из таблицы стилей прочитать не удалось, платформа экстренно сбрасывает оформление до базового системного уровня.Примечательно, что в самом Конфигураторе при этом все может выглядеть идеально, поскольку конфигуратор работает напрямую со структурами базы данных локально, минуя механизмы оптимизации кэша сессий сервера приложений.
Если проблема затронула конкретную форму нового документа или отчета, которую вы только что разработали, самым быстрым локальным решением будет отказ от авто-определения цвета рамки. Мы можем принудительно указать платформе, какой именно элемент стиля нужно использовать.
Давайте разберем этот процесс по шагам:
Авто принудительно выберите из выпадающего списка предопределенный элемент стиля — Рамка (или задайте явно системный цвет РамкаТекущегоЭлементаУправления).После жесткого указания ссылки на элемент стиля платформа перестанет использовать алгоритм авто-определения, и рамки элементов больше не будут сбрасываться до черных прямоугольников при сбоях кэша.
Для гарантированного устранения этой проблемы на уровне кода (например, при динамическом создании элементов на форме) мы можем использовать следующий программный код:
// Программный обход элементов формы для восстановления корректного стиля рамок
Для Каждого Элемент Из ЭлементыФормы Цикл
Если ТипЗнч(Элемент) = Тип("ПолеВвода") Или ТипЗнч(Элемент) = Тип("ТабличноеПоле") Тогда
// Принудительно назначаем цвет из системного стиля оформления
Элемент.ЦветРамки = ЦветаСтиля.Рамка;
КонецЕсли;
КонецЦикла;
Если искажение стилей («траурные» рамки или розовый фон) приняло массовый характер и наблюдается у многих пользователей на разных формах, проблема кроется глубоко в серверном кэше службы rphost. Локальная очистка папок AppData на компьютерах пользователей в этом случае не поможет, так как битые метаданные раздает сам сервер приложений.
Рассмотрим алгоритм полной очистки серверного кэша:
Это самый быстрый и безопасный способ заставить сервер 1С полностью пересобрать кэш сессий для конкретной базы без остановки всей службы сервера приложений (что критично для крупных предприятий).
Разрешить запуск регламентных заданий в соответствии с вашими регламентами.При повторном добавлении базы сервер приложений 1С будет вынужден создать абсолютно новый кэш метаданных с чистого листа. Все подключившиеся пользователи получат корректно десериализованные стили оформления.
Если перерегистрация базы не помогла, выполним тотальную физическую очистку кэша службы сервера 1С. Для этого потребуется кратковременная остановка службы:
services.msc в строке выполнения).1C:Enterprise 8.3 Server Agent) и остановите её.C:\Program Files\1cv8\srvinfo\ (или C:\Program Files (x86)\1cv8\srvinfo\).reg_1541).1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d.Чтобы раз и навсегда обезопасить вашу базу данных от «поплывших» стилей, черных рамок и розовых окон, придерживайтесь трех простых правил при разработке и обновлении:
rphost.%localappdata%\1C\1Cv8 и %appdata%\1C\1Cv8, а затем добавьте базу в список заново.Мы детально проанализировали причины смены стилей элементов на черные рамки и розовые фоны при динамическом обновлении, изучили способы программного и интерактивного исправления визуального отображения форм, а также освоили методы очистки серверных кэшей для восстановления стабильной работы конфигураций на платформе 1С:Предприятие 8.3.