Как исправить некорректный размер окна справочника Сотрудники в УПП после обновления платформы на 8.3.12?

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

Переход на новые релизы платформы 1С часто сопровождается не только появлением новых возможностей, но и возникновением специфических визуальных артефактов, особенно в конфигурациях, использующих обычные формы (V8.2 style), таких как Управление производственным предприятием 1.3 или Зарплата и управление персоналом 2.5. Одной из наиболее известных проблем ветки 8.3.12.1685 стал баг «схлопывания» окон, когда форма справочника Сотрудники открывается в сильно уменьшенном виде, и стандартные манипуляции мышкой не позволяют зафиксировать ее размер.

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

Выясняем причину: почему окна «схлопываются»?

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

Особенно часто это проявляется, если в Windows установлено масштабирование экрана (например, 125% или 150%). Платформа «запутывается» в координатах, и при каждом открытии форма пытается восстановить «битые» настройки из кэша, что делает окно маленьким.

Решение 1: Очистка кэша конфигурации и настроек пользователя

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

  1. Очистка локального кэша: Необходимо удалить содержимое папок %AppData%\1C\1cv8 и %LocalAppData%\1C\1cv8. Именно в каталоге Local хранятся данные о состоянии списков и форм (файлы с расширением .tst).
  2. Очистка кэша на сервере: Если используется клиент-серверный вариант, администратору стоит остановить службу 1C:Enterprise 8.3 Server Agent и очистить папку snccntx в каталоге сервера приложений.
  3. Удаление базы из списка: Иногда самым эффективным методом является удаление информационной базы из списка запуска и ее повторное добавление. Это сбрасывает идентификаторы настроек формы для данного пользователя.

Решение 2: Программное исправление через обработчик обновления отображения

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

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


Процедура ОбновлениеОтображения()
    // Принудительно разворачиваем и сворачиваем панель для сброса бага отрисовки
    ЭлементыФормы.ПанельДополнительныеСведения.Свертка = РежимСверткиЭлементаУправления.Нет; 
    ЭлементыФормы.ПанельДополнительныеСведения.Свертка = РежимСверткиЭлементаУправления.Низ;
КонецПроцедуры

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

Решение 3: Сброс настроек положения окна

Рассмотрим ситуацию, когда проблема вызвана конкретной записью в системном хранилище настроек. Мы можем программно очистить настройки формы для текущего пользователя. Это можно сделать, добавив в процедуру ПриОткрытии следующий код:


Процедура ПриОткрытии()
    // Сбрасываем сохраненное положение окна, если ширина формы аномально мала
    Если ЭтаФорма.Ширина < 100 Тогда
        ЭтаФорма.УстановитьСтандартныеНастройки();
    КонецЕсли;
КонецПроцедуры

Использование метода УстановитьСтандартныеНастройки() возвращает форму к виду, заданному разработчиком в Конфигураторе, игнорируя «сломанный» кэш платформы 8.3.12.

Решение 4: Проблемы с фильтрами и зависаниями (дополнительно)

Иногда после обновления платформы пользователи замечают не только проблемы с размером окон, но и странное поведение динамических списков: например, начинают отображаться уволенные сотрудники, хотя фильтр установлен. Это связано с тем, что 8.3.12 изменила логику работы с индексами временных таблиц в запросах обычных приложений.

В этом случае проанализируем настройки отбора. Помогает полное пересоздание настройки списка:

  1. Откройте форму списка.
  2. Зайдите в «Все действия» (или «Действия» в обычных формах) — «Установить стандартные настройки».
  3. Если это не помогло, проверьте свойство КлючСохраненияПоложенияОкна в конфигураторе. Иногда его изменение на произвольную строку заставляет платформу создать новый чистый кэш для этой формы.

Рекомендации по выбору версии платформы

Подводя итог, стоит отметить, что ветка 8.3.12 признана специалистами одной из самых проблемных для работы с конфигурациями на обычных формах. Если производственная необходимость требует использования функционала 8.3 (например, для сдачи отчетности в ПФР или работы с ЭДО), рекомендуется выполнить одно из следующих действий:

Применяя описанные выше методы, мы сможем вернуть комфортную работу пользователям УПП и ЗУП, минимизировав негативные последствия от багов платформы.

← На главную