Многие пользователи и администраторы систем 1С сталкиваются с крайне раздражающей ситуацией: при закрытии любого дочернего окна (будь то форма выбора, модальное окно вопроса или форма документа) основное окно приложения 1С:Предприятие внезапно сворачивается или «проваливается» под окна других запущенных программ (браузера, почтового клиента или проводника). Это не просто визуальный баг, а серьезная помеха в работе, которая приводит к потере фокуса ввода и необходимости совершать лишние клики мышью. В рамках данной статьи мы подробно разберем природу этого явления, определим виновные версии платформы и изучим все доступные методы решения — от официальных обновлений до тонкой настройки операционной системы.
Проанализируем техническую сторону вопроса. Данное поведение связано с механизмом управления порядком окон (так называемым Z-order) в операционной системе Windows. Когда в 1С закрывается модальное окно или окно с блокировкой владельца, платформа должна корректно передать фокус обратно родительскому окну. Однако в ряде версий технологической платформы 8.3 был допущен баг: при уничтожении объекта формы операционная система не получает четкой команды о том, какое окно должно стать активным. В результате Windows передает фокус следующему приложению в стеке активных окон, а 1С оказывается на заднем плане.
Эта проблема была официально зарегистрирована под номером 10226287. Согласно технической документации, ошибка проявляется преимущественно в управляемом приложении при использовании интерфейса «Такси».
Рассмотрим самый надежный и официально рекомендованный способ. Поскольку проблема признана багом платформы, разработчики фирмы «1С» выпустили исправления в последующих сборках. Если вы столкнулись с этой ошибкой, в первую очередь необходимо проверить текущую версию вашей платформы.
Согласно отчетам тестирования и официальным спискам исправлений, стабильная работа восстанавливается в следующих версиях (и выше):
Проанализируем ситуацию, если обновление не помогло или временно невозможно. В этом случае перейдем к системным и программным методам обхода проблемы.
Разберем способ, который часто помогает «удержать» фокус внутри активного приложения. В ОС Windows существует параметр, который предотвращает автоматический перехват фокуса сторонними программами. Мы можем изменить это поведение через редактор реестра.
Выполним следующие шаги по порядку:
regedit и нажмите Enter.HKEY_CURRENT_USER\Control Panel\Desktop.Установка этого параметра в 0 позволяет приложениям мгновенно передавать фокус между своими окнами, что нивелирует задержку, из-за которой окно 1С успевает «провалиться» вниз.
Если вы являетесь разработчиком конфигурации и хотите минимизировать проблему для пользователей без изменения настроек ОС, рассмотрим использование встроенного языка 1С. В некоторых случаях помогает принудительная активация основного окна после закрытия подчиненного. Для конфигураций УТ 10.3 и УПП 1.3 на платформе 8.3.25 и выше можно использовать готовую форму подбора с автоматической установкой фокуса.
Посмотрим на пример логики, которую можно внедрить в обработчик закрытия формы или в процедуру оповещения:
&НаКлиенте
Процедура ПослеЗакрытияДочернейФормы(Результат, ДополнительныеПараметры) Экспорт
// Принудительно возвращаем фокус текущему окну
ЭтаФорма.Активировать();
КонецПроцедуры
Также проанализируем использование метода ПодключитьОбработчикОжидания. Иногда фокус теряется не мгновенно, и вызов Активировать() сразу после закрытия не срабатывает. В таком случае можно запустить краткую паузу:
&НаКлиенте
Процедура ПриЗакрытии(Отказ)
ПодключитьОбработчикОжидания("ВернутьФокусНаФорму", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ВернутьФокусНаФорму()
ЭтаФорма.Активировать();
КонецПроцедуры
Выясним, как настройки графической оболочки влияют на стабильность интерфейса. Замечено, что визуальные эффекты Windows (плавное сворачивание и развертывание окон) могут конфликтовать с механизмом отрисовки форм 1С в режиме управляемого приложения.
Рассмотрим алгоритм оптимизации быстродействия системы:
Это упростит работу диспетчера окон Windows (DWM) и позволит формам 1С закрываться и передавать фокус быстрее, без ожидания завершения графических переходов.
Проанализируем влияние режима работы интерфейса. Пользователи отмечают, что при использовании режима «Формы в отдельных окнах» (вместо стандартных закладок в «Такси») проблема возникает значительно реже. Если ваша специфика работы позволяет изменить настройки интерфейса (Меню -> Настройки -> Параметры -> Режим открытия форм), попробуйте переключиться на этот вариант.
Подведем итог: наиболее эффективным решением остается переход на исправленные версии платформы (начиная с 8.3.18.1334). Если же это не помогает, используйте комбинацию из правки реестра ForegroundLockTimeout и отключения анимации окон в Windows. Совокупность этих мер гарантирует стабильное поведение приложения и избавляет от самопроизвольного сворачивания 1С.