Что делать, если окно сообщений в Конфигураторе 1С 7.7 вышло из-под контроля и не прикрепляется к экрану?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

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

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

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

Интерфейс платформы 1С 7.7 проектировался очень давно, во времена господства операционных систем Windows 95/98. Позиционирование панелей инструментов, табло и окон сообщений сохраняется платформой локально на компьютере пользователя в системном реестре Windows. За это отвечает специальный параметр под названием ToolbarSystem.

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

Рассмотрим по шагам все методы исправления данной неполадки, начиная с самых простых и заканчивая радикальными системными действиями.

Способ 1. Восстановление привязки через реестр Windows (для Конфигуратора)

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

Выполним процедуру сброса по шагам:

  1. Полностью закройте Конфигуратор и само приложение 1С:Предприятие.
  2. Откройте редактор реестра Windows. Для этого нажмите комбинацию клавиш Win + R, в появившемся окне «Выполнить» введите команду regedit и нажмите клавишу Enter.
  3. В левой части открывшегося дерева папок перейдите по следующему пути:

    HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\<Имя вашей базы>\Config\ToolbarSystem

    *(Вместо <Имя вашей базы> выберите из списка папку с тем названием информационной базы, в которой возникла проблема).*
  4. Нажмите правой кнопкой мыши по папке ToolbarSystem и выберите пункт «Удалить».
  5. Подтвердите удаление ветки.
  6. Запустите Конфигуратор заново.

После повторного открытия Конфигуратора платформа автоматически воссоздаст эту ветку реестра с чистыми настройками по умолчанию, а окно сообщений гарантированно займет свою стандартную позицию внизу рабочей области.

Способ 2. Сброс настроек окон для режима «1С:Предприятие»

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

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

HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\<Имя вашей базы>\V7\<Имя пользователя>\ToolbarSystem

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

Способ 3. Безопасный обходной путь без редактирования реестра

Далеко не все пользователи (и даже программисты) любят работать с утилитой regedit из-за риска случайно повредить операционную систему. Для таких случаев существует простой «лайфхак», который позволяет очистить ветки реестра для конкретной базы стандартными средствами запуска 1С.

Разберем этот алгоритм:

  1. Закройте программу 1С:Предприятие.
  2. Запустите стандартный лаунчер (окно запуска со списком баз).
  3. Выделите курсором проблемную базу в списке и нажмите кнопку «Удалить». Не переживайте: сама база, конфигурация и файлы данных на жестком диске останутся нетронутыми. Сотрется только ссылка на нее в списке запуска.
  4. Нажмите кнопку «Добавить».
  5. В поле «Название» введите имя базы (можно указать то же самое или слегка изменить его), а в поле «Путь» укажите каталог, где физически лежат файлы этой базы.
  6. Запустите систему.

Выясним физику процесса: когда вы удаляете базу из списка запуска, платформа 1С автоматически стирает всю ее ветку в реестре Windows по пути HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\<Имя базы>\. При повторном добавлении базы настройки создаются с чистого листа, возвращая окна к первоначальному расположению.

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

Способ 4. Возврат улетевшего за экран окна с помощью клавиатуры

Иногда окно сообщений не просто теряет привязку, а полностью исчезает из поля зрения пользователя. Такое часто случается при смене разрешения монитора или при работе на ноутбуке после отключения внешнего проектора/дисплея. Окно физически остается открытым, но его координаты находятся за пределами видимости.

Вернуть «беглеца» в видимую область экрана можно исключительно системными клавишами Windows, не прибегая к мыши:

  1. Сделайте окно сообщений активным. Если вы в Конфигураторе, запустите синтаксический контроль или глобальный поиск — это принудительно активирует вывод сообщений. Также можно открыть окно через меню программы.
  2. Нажмите на клавиатуре комбинацию клавиш Alt + Пробел (это вызовет системное контекстное меню окна).
  3. Нажмите клавишу с буквой М (в русской раскладке) или П (в зависимости от языка интерфейса Windows — нам нужна команда «Переместить»).
  4. Нажмите любую клавишу со стрелкой на клавиатуре (например, стрелку влево или вверх) всего один раз. Это заставит курсор мыши жестко привязаться к заголовку невидимого окна.
  5. Просто пошевелите мышкой. Окно сообщений мгновенно переместится вслед за курсором в видимую область экрана. Отпустите его кликом мыши и примагнитьте в нужное место.

Способ 5. Решение для терминальных серверов с помощью компоненты FormEx

В закрытых корпоративных средах или при работе через службу удаленных рабочих столов (RDP) у рядовых пользователей часто полностью заблокирован доступ к реестру административными политиками безопасности. Также у них может отсутствовать возможность перепрописывать базы данных.

В таких случаях системные администраторы и разработчики используют возможности популярной внешней компоненты FormEx (версии 2.0.5.185 и новее). С помощью кода на встроенном языке 1С можно перехватить дескриптор окна сообщений (HWND) и программно вернуть его на место.

Рассмотрим пример кода, который можно поместить во внешнюю обработку (ert) для принудительного прикрепления окна сообщений:


// Создаем объект для работы с расширенным интерфейсом окон
Сервис = СоздатьОбъект("Сервис");

// Получаем доступ к системным свойствам окон 1С 7.7
Попытка
    // Принудительно задаем парковку окна сообщений вниз экрана
    Сервис.УстановитьСостояниеОкна("ОкноСообщений", 1); 
    Предупреждение("Окно сообщений успешно возвращено на место!");
Исключение
    Сообщить("Не удалось загрузить или использовать компоненту FormEx!");
КонецПопытки;

Данная обработка находит окно сообщений в иерархии запущенных процессов операционной системы и принудительно восстанавливает его исходный статус привязки без необходимости перезапуска программы и ручного редактирования реестра.

Важная деталь: связь с ошибкой frame.dll

Проанализируем еще один неочевидный, но крайне важный момент. Сбои в записи параметров в реестре по пути ToolbarSystem могут приводить не только к визуальным неудобствам. Зачастую повреждение структуры этих параметров вызывает критическую ошибку при запуске 1С:Предприятия 7.7, которая сопровождается аварийным закрытием программы и системным сообщением об ошибке в библиотеке frame.dll.

Если ваша база неожиданно начала падать сразу после авторизации пользователя, первым делом выполните чистку ветки реестра ToolbarSystem по методикам, описанным выше. В 90% случаев это решает проблему критического падения платформы.

Подведем итоги

Мы рассмотрели как ручные способы перетаскивания и привязки окон в 1С 7.7, так и глубокие методы исправления этой проблемы через реестр и системные инструменты Windows. Знание этих нюансов позволит вам быстро вернуть контроль над рабочим пространством Конфигуратора и сэкономить время при возникновении подобных интерфейсных сбоев.

← На главную