Что делать, если документ в 1С открывается в маленьком окне и не разворачивается на весь экран?

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

При работе в среде 1С:Предприятие 8.3 на обычных формах пользователи нередко сталкиваются с досадной проблемой: окно конкретного документа (например, НакладнаяНаСборку или любого другого) открывается в сильно уменьшенном виде — занимает треть экрана или вовсе сворачивается в крошечный прямоугольник. При этом у других сотрудников всё отображается корректно. Обычные попытки растянуть форму или стандартная команда "Восстановить положение окна" помогают лишь временно: при следующем запуске базы или открытии этого же документа окно снова "схлопывается".

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

Выясним причину: почему ломается геометрия окон в 1С

В основе этого бага лежит механизм платформы 1С по сохранению персональных настроек отображения. Когда пользователь закрывает форму, система пытается записать её последние геометрические координаты (высоту, ширину, положение на экране) в локальный кэш на компьютере. Однако в этот процесс часто вмешиваются внешние факторы:

  1. Масштабирование Windows (DPI): Если на компьютере пользователя или на RDP-сервере установлен масштаб экрана отличный от 100% (например, 125% или 150%), то при расчете координат формы возникает системная ошибка округления. В кэш записываются искаженные или вовсе отрицательные значения.
  2. Сбои кэша настроек: Локальные файлы настроек пользователя могут повредиться при некорректном завершении сеанса 1С или аварийном выключении компьютера.
  3. Ошибки релиза платформы: В некоторых версиях платформы 1С v8.3 (например, в ветках 8.3.11 и смежных) существовали внутренние ошибки работы с координатами обычных форм, из-за которых окна самопроизвольно сжимались.

Рассмотрим подробнее по шагам, как исправить эту проблему разными способами в зависимости от вашего уровня прав доступа к системе.

---

Вариант 1. Решение проблемы силами пользователя или системного администратора

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

Шаг 1. Настройка масштабирования высокого разрешения (DPI) в Windows

Поскольку некорректный масштаб экрана Windows является наиболее частой причиной сжатия окон, отрегулируем параметры совместимости пускового файла 1С:

  1. Закройте все запущенные сеансы 1С:Предприятия.
  2. Нажмите правой кнопкой мыши на ярлык, через который вы запускаете 1С, и выберите пункт Свойства.
  3. Перейдите на вкладку Совместимость и нажмите кнопку Изменить параметры высокого DPI (в старых версиях Windows эта кнопка может называться по-другому или настройки находятся прямо на вкладке).
  4. В открывшемся окне установите флажок напротив пункта "Переопределите режим масштабирования высокого разрешения".
  5. В выпадающем списке под ним выберите значение Система (или Приложение, если первый вариант не даст результата).
  6. Нажмите ОК и сохраните изменения свойств ярлыка.

Шаг 2. Очистка кэша настроек пользователя

Самый быстрый способ сбросить "залипшие" некорректные координаты для базы данных — удалить её из списка запуска и прописать заново. При этом 1С автоматически создаст новый каталог для хранения локальных настроек. Если этот способ не сработал, произведем очистку вручную:

  1. Полностью закройте 1С.
  2. Откройте проводник Windows и перейдите по путям (можно скопировать эти строки в адресную строку проводника):
    • %userprofile%\AppData\Local\1C\1Cv8
    • %userprofile%\AppData\Roaming\1C\1Cv8
  3. Внутри этих каталогов вы найдете папки с длинными буквенно-цифровыми именами (UID базы данных). Удалите папки, относящиеся к проблемной базе. Если сомневаетесь, какую именно базу удалять, можно безопасно очистить все подобные папки (при этом сбросятся настройки положения окон для всех баз, но сами данные не пострадают).

Шаг 3. Очистка сохраненных настроек внутри информационной базы

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

  1. Запустите 1С:Предприятие под пользователем с административными правами.
  2. Перейдите в меню Сервис -> Настройки пользователей -> Сохраненные настройки (путь может отличаться в зависимости от конфигурации).
  3. Найдите настройки окон для проблемного пользователя, выберите строку с нужным документом (в нашем случае НакладнаяНаСборку) и удалите эту запись.

---

Вариант 2. Решение проблемы разработчиком (в Конфигураторе)

Если вы являетесь администратором или программистом 1С и имеете доступ к изменению метаданных конфигурации, проблему можно решить раз и навсегда для всех пользователей программным путем.

Метод 1. Проверка интерактивных привязок элементов формы

Давайте проверим форму документа на предмет внутренних конфликтов привязок, которые при изменении разрешения экрана могут сжимать форму до минимальных размеров:

  1. Откройте Конфигуратор и найдите форму нужного документа.
  2. Откройте форму и нажмите сочетание клавиш Ctrl + R для перехода в режим тестирования формы.
  3. Попробуйте интерактивно изменять размеры тестового окна мышкой в разные стороны.
  4. Если при растягивании или сжатии границы элементов начинают накладываться друг на друга, "уползать" за пределы экрана или подсвечиваться красным — значит, на форме настроены конфликтующие привязки. Необходимо зайти в свойства проблемных элементов и скорректировать их привязки к границам формы.

Метод 2. Изменение свойств отображения окна формы

Иногда обмануть баг платформы помогает изменение базовых свойств отображения самой формы:

  1. В Конфигураторе откройте палитру свойств проблемной формы.
  2. Найдите свойство Состояние окна. По умолчанию там установлено значение Обычное.
  3. Попробуйте изменить это значение на Свободное. Это снимет жесткие ограничения платформы на фиксацию размеров окна при повторном открытии.

Метод 3. Программный сброс параметров сохранения геометрии

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

Для этого в модуле формы документа в обработчике события ПередОткрытием() или ПриОткрытии() проанализируем и изменим свойство формы ИмяСохраненияПоложенияОкна:


Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    // Очищаем имя сохранения, чтобы система каждый раз открывала форму в стандартном виде
    ЭтаФорма.ИмяСохраненияПоложенияОкна = "";
КонецПроцедуры

Если очистка имени сохранения не помогает, мы можем принудительно заставить форму открываться в максимизированном состоянии (на весь экран):


Процедура ПриОткрытии()
    // Принудительно разворачиваем окно формы на весь экран
    ЭтаФорма.СпособОтображенияОкна = ВариантСпособаОтображенияОкна.Максимизированное;
КонецПроцедуры

Метод 4. Автоматическое восстановление положения окна через эмуляцию нажатия клавиш

Существует также нестандартный, но крайне эффективный "костыль", который используют разработчики для борьбы с залипанием окон на уровне операционной системы. Метод имитирует нажатие комбинации клавиш Alt + Shift + R (стандартное сочетание в 1С для восстановления положения текущего окна) с помощью COM-объекта Windows Script Host:


Процедура ПриОткрытии()
    Попытка
        // Создаем COM-объект для работы с системными командами Windows
        Шелл = Новый COMОбъект("WScript.Shell");
        // Имитируем нажатие горячих клавиш Alt + Shift + R
        Шелл.SendKeys("%+R"); 
    Исключение
        // Игнорируем ошибку, если у пользователя заблокирован запуск скриптов WScript
    КонецПопытки;
КонецПроцедуры

Проанализировав все указанные методы, мы видим, что наиболее надежным и быстрым решением без вмешательства в код конфигурации является настройка параметров DPI ярлыка 1С совместно с очисткой папок кэша пользователя. Если же проблема носит массовый характер, то разработчику рекомендуется применить программный сброс свойства ИмяСохраненияПоложенияОкна непосредственно в Конфигураторе.

← На главную