В работе системных администраторов и программистов 1С часто возникают ситуации, когда после штатного обновления платформы пользователи начинают жаловаться на странное поведение интерфейса. Одним из наиболее раздражающих «глюков», проявившихся в ветках 8.3.12 и 8.3.13, стала потеря интерактивности форм после выполнения печати документов. Рассмотрим подробнее, как проявляется эта проблема, почему она возникает и как её правильно устранить.
Проанализируем типичный сценарий возникновения ошибки. Пользователь работает в терминальном режиме (RDP) на сервере под управлением Windows Server 2008 или новее. После формирования любой печатной формы (например, счета на оплату или требования-накладной) и её отправки на принтер, основное окно 1С начинает вести себя некорректно:
F2 (редактирование), Del (пометка на удаление), Enter (открытие объекта).Интересной особенностью является то, что фокус возвращается, если переключиться на другое приложение (например, на панель задач или браузер) и снова вернуться в окно 1С. Это явный признак того, что платформа некорректно обрабатывает системные сообщения Windows о фокусе окна.
Выясним причину такого поведения. Данный дефект официально зарегистрирован в баг-трекере фирмы 1С под номером 10201636. Проблема заключается в механизме взаимодействия платформы с системным диалогом печати в режиме терминального доступа. Когда окно печати закрывается, управление должно возвращаться активной форме 1С, однако из-за ошибки в коде платформы фокус «застревает» в несуществующем модальном слое.
Проблема характерна для файловых и клиент-серверных баз при использовании управляемых форм. Наиболее остро она проявилась в релизах 8.3.12.1616 и 8.3.13.1513. Рассмотрим, какие варианты решения существуют на текущий момент.
Самым правильным и надежным способом решения является переход на релизы, в которых данная ошибка была официально исправлена разработчиками. Проанализируем список стабильных версий:
Если ваша конфигурация позволяет использовать более современные ветки платформы (например, 8.3.18 или 8.3.22), рекомендуется перейти на них, так как в новых версиях исправлено множество других сопутствующих ошибок работы в RDP.
Разберем важный нюанс. Некоторые пользователи пытались решить проблему установкой релиза 8.3.12.1529. Хотя «глюк» с контекстным меню в нем пропадает, этот релиз содержит другую, гораздо более опасную критическую ошибку под номером 10201267.
Внимание: В релизе 1529 при выполнении регламентной операции «Тестирование и исправление» (ТиИ) с включенным пунктом очистки ссылок на несуществующие объекты, происходит полное удаление данных из таблиц истории изменений (DataHistory). Это может привести к безвозвратной потере аудиторского следа в базе данных. Поэтому использовать релиз 8.3.12.1529 категорически не рекомендуется.
Если оперативно обновить платформу на сервере невозможно (например, из-за регламентных ограничений), предложим пользователям временные «костыли», которые позволяют вернуть фокус без перезапуска программы:
Alt дважды (это заставляет Windows пересчитать фокус меню).Alt + Tab для быстрого переключения между окнами.Посмотрим на ситуацию шире. Помимо проблем с фокусом, пользователи новых версий 8.3.12 и 8.3.13 сталкивались и с другими аномалиями, о которых стоит знать системному администратору:
1. Пасхалка «Тестировщики правят миром!»
В релизе 8.3.13.1513 разработчики случайно оставили отладочное сообщение. Оно появляется при попытке редактирования номеров сообщений в планах обмена (синхронизация данных). При нажатии правой кнопкой мыши по номеру сообщения возникала надпись со смайликом. Это не является признаком вируса, а лишь подтверждает «сырость» тестирования конкретной сборки.
2. Повышенное потребление памяти (Chromium)
Начиная с ветки 8.3.12, 1С интегрировала движок на базе Chromium для отображения встроенной справки и некоторых элементов интерфейса. Это привело к тому, что каждый сеанс пользователя в терминале стал потреблять значительно больше оперативной памяти (в некоторых случаях до 1-1.5 Гб на процесс). Рассмотрим пример: если на сервере работают 20 пользователей, необходимо закладывать минимум 32 Гб ОЗУ только под нужды 1С, не считая операционной системы и SQL-сервера.
3. Проблемы с временным хранилищем в толстом клиенте
Проанализируем ситуацию с обычным приложением. В некоторых релизах была замечена некорректная работа метода ПоместитьВоВременноеХранилище. Данные могли очищаться раньше времени, что ломало работу прогресс-баров при длительных операциях обновления информационной базы.
Подведем итог нашему анализу. Чтобы избежать проблем с контекстным меню, горячими клавишами и потерей данных, рекомендуем придерживаться следующей стратегии:
Всегда выполняйте резервное копирование перед обновлением платформы и тестируйте работу ключевых функций (печать, поиск, синхронизация) на копии базы данных в условиях, максимально приближенных к боевым (RDP-сессия).