Проблема, при которой окна документов или справочников в 1С открываются «на пол-экрана», в свернутом виде или со смещением, является классической для систем, использующих обычные формы (толстый клиент). Особенно остро эта ситуация проявляется при работе в терминальном режиме (RDP) на операционных системах Windows Server 2008/2012. Рассмотрим причины возникновения этой ошибки и разберем по шагам проверенные методы её устранения.
Первым делом выясним причину, почему формы начинают вести себя непредсказуемо. В большинстве случаев это связано с тем, как платформа 1С:Предприятие взаимодействует с графической подсистемой Windows. Проанализируем основные факторы:
Наиболее эффективным и долгосрочным решением является программное вмешательство. Мы можем заставить систему игнорировать старые, «битые» настройки положения окна, присвоив форме новый уникальный идентификатор сохранения. Рассмотрим, как это реализовать в Конфигураторе.
Разберем пример кода, который необходимо добавить в модуль формы документа или справочника, который открывается некорректно. Нам потребуется обработчик события ПриОткрытии:
Процедура ПриОткрытии()
// Принудительно устанавливаем новый идентификатор сохранения положения
// Это заставит систему считать форму "новой" и игнорировать старый кэш
ЭтаФорма.ИмяСохраненияПоложенияОкна = Новый УникальныйИдентификатор;
// Устанавливаем способ отображения - Максимизированное
ЭтаФорма.СпособОтображенияОкна = ВариантСпособаОтображенияОкна.Максимизированное;
КонецПроцедуры
Важный момент: Использование Новый УникальныйИдентификатор приведет к тому, что 1С будет генерировать новый ID при каждом открытии, и форма всегда будет открываться в режиме, заданном по умолчанию (в нашем случае — на весь экран). Это гарантированно решает проблему «половинчатых» окон.
Если вы не хотите менять программный код или форма находится на строгой поддержке, проанализируем визуальный метод исправления. Часто проблема кроется в «слетевших» привязках или микро-ошибках в структуре формы.
Попробуем выполнить следующие действия в Конфигураторе:
Такая манипуляция заставляет платформу пересчитать все автоматические привязки элементов. Как показывает практика, выполнение этой процедуры непосредственно на сервере (в терминальной сессии) иногда дает лучший результат, так как система учитывает текущие параметры разрешения экрана сервера.
Если проблема носит единичный характер, рассмотрим способ решения без привлечения программиста. В 1С предусмотрена штатная команда восстановления положения окон. Для этой задачи также можно использовать обработку для просмотра и очистки хранилища настроек пользователей, которая позволяет сбрасывать и восстанавливать параметры отображения окон без ручного удаления конфигурационных файлов.
Выполним следующие шаги в режиме «Предприятие»:
Проанализируем результат: Этот метод помогает очистить запись в файле v8forms.lst для конкретного объекта. Однако, если причина в DPI или баге платформы, через некоторое время проблема может вернуться.
Если вышеописанные методы не помогают, выясним причину в системном окружении. В терминальном режиме настройки пользователей хранятся в папках %AppData%\Local\1C\1Cv8 и %AppData%\Roaming\1C\1Cv8.
Рассмотрим порядок полной очистки настроек:
Обратите внимание: При работе через RDP разрешение экрана клиента передается на сервер. Если пользователь подключается с ноутбука с 4K-дисплеем и масштабом 200%, 1С почти гарантированно будет отображать обычные формы некорректно. В таких случаях единственным стабильным решением остается Способ 1 с принудительной максимизацией окна через код.
Проанализировав ситуацию, можно сделать вывод, что наиболее стабильным решением для современных релизов платформы 8.3 при работе с устаревшими обычными формами является комбинированный подход. Мы рекомендуем установить свойство формы СпособОтображенияОкна в значение Максимизированное и программно обновлять ИмяСохраненияПоложенияОкна. Это исключит влияние накопленных в кэше ошибок и обеспечит комфортную работу пользователей вне зависимости от их индивидуальных настроек рабочего стола и разрешений мониторов.