В практике работы с «обычным приложением» 1С (например, в конфигурации УПП или КА 1.1) программисты часто сталкиваются с загадочным поведением интерфейса: форма документа, которая годами работала исправно, вдруг перестает растягиваться по горизонтали или вертикали у конкретного пользователя. При этом у коллег всё отображается корректно, а проверка привязок в конфигураторе не выявляет ошибок. Рассмотрим подробнее, почему это происходит и как победить «залипшее» положение окна.
Стандартная команда «Восстановить положение окна» (доступная через правую кнопку мыши в диспетчере окон или через меню «Окно») сбрасывает текущие координаты формы до значений по умолчанию, заданных в конфигураторе. Однако в платформе 1С 8.3 механизмы кэширования настроек стали более агрессивными. Параметры окна сохраняются не только в локальных файлах на компьютере пользователя, но и в базе данных. Если в этот кэш попала некорректная запись (например, из-за сбоя сессии RDP или изменения масштаба экрана), форма будет «схлопываться» при каждом новом открытии, игнорируя настройки привязок.
Первым делом разберем по шагам самый простой, но эффективный метод — очистку локального кэша. Поскольку проблема наблюдается у одного пользователя, мы понимаем, что дело в его персональных настройках.
%AppData%\1C\1Cv8%LocalAppData%\1C\1Cv8Если чистка кэша не дала результата, проанализируем ситуацию с точки зрения разработки. Бывает, что привязки настроены «почти правильно», и это проявляется только при определенных разрешениях экрана.
Откройте форму документа в Конфигураторе и воспользуйтесь инструментом проверки. Нажмите Ctrl + R для перехода в режим тестирования формы. Попробуйте растягивать окно за края. Если какие-то элементы остаются на месте или наезжают друг на друга, значит, привязки настроены некорректно.
Важный нюанс: обратите внимание на цвет линий привязок. Если при проверке загораются красные линии — платформа сигнализирует о циклической зависимости или конфликте логики (например, правая граница элемента привязана к левой границе формы, которая сама зависит от этого элемента).
Если вы не хотите заставлять пользователя постоянно чистить кэш, можно применить «хирургическое» решение прямо в коде формы. Суть метода заключается в том, чтобы заставить 1С думать, что форма открывается впервые и для неё еще нет сохраненных настроек положения.
Посмотрим на пример реализации в модуле формы. Нам понадобится обработчик события ПередОткрытием:
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
// Устанавливаем новый уникальный идентификатор ключа сохранения.
// Это заставит платформу игнорировать старый (битый) кэш положения окна.
КлючСохраненияПоложенияОкна = Новый УникальныйИдентификатор;
// Если нужно, чтобы окно всегда открывалось на весь экран:
ЭтаФорма.СпособОтображенияОкна = ВариантСпособаОтображенияОкна.Максимизированное;
КонецПроцедуры
Использование УникальныйИдентификатор гарантирует, что при каждом запуске форма будет считывать настройки «как в первый раз». Это радикальный метод, так как пользователь не сможет сохранить удобный ему размер окна, но он на 100% решает проблему «залипания» некорректных размеров.
Часто корень проблемы кроется в настройках операционной системы. Выясним причину, связанную с масштабированием (DPI). Обычные формы 1С плохо реагируют на масштаб Windows 125% или 150%.
Если пользователь работает через терминальный сервер (RDP), проверьте:
Иногда форма не растягивается из-за того, что основной контейнер (например, Панель или Группа), внутри которого лежат все элементы, не имеет привязки к правой или нижней границе самой формы.
Рассмотрим подробнее: вы можете настроить привязки кнопок и полей ввода к краям панели, но если сама Панель жестко зафиксирована по ширине, то при растягивании формы визуально ничего не произойдет. Проверьте свойство ПривязкаСправа для всех родительских элементов по иерархии (Форма -> Панель -> Элемент).
Для исправления формы, которая не растягивается в 1С, мы рекомендуем придерживаться следующего алгоритма:
во-первых, выполните стандартное восстановление положения окна;
во-вторых, очистите локальный кэш пользователя (удаление базы из списка — самый простой вариант);
в-третьих, если проблема повторяется, используйте программную установку КлючСохраненияПоложенияОкна в коде формы. Это позволит гарантированно обойти любые ошибки кэширования интерфейса платформой.