В процессе работы пользователей в конфигурации «Торговля и Склад» (7.7) в терминальном сеансе Windows Server 2003 может возникать хаотичное закрытие программы. Проблема проявляется во время ввода текстовых данных или заполнения табличной части товарных накладных. При этом программа завершается аварийно без вывода предупреждающих сообщений.
Проанализируем журнал событий операционной системы (Event Viewer) на сервере. В разделе Application Error фиксируется запись со следующими параметрами:
Имя сбойного приложения: 1CV7.exe, версия 7.70.0.25
Имя сбойного модуля: BLang.dll, версия 7.70.0.25
Код ошибки: 1000, смещение 0x00003103
Выясним причины такого поведения платформы и разберем по шагам проверенные способы устранения сбоев.
Модуль BLang.dll отвечает за обработку встроенного языка платформы 1С 7.7, а также за взаимодействие с устройствами ввода и переключение языковых раскладок клавиатуры. Поскольку платформа 1С 7.7 является однопоточным 32-разрядным приложением, работающим в однобайтовом режимe ANSI, она крайне чувствительна к внешним потокам и перехватчикам ввода (хукам), создаваемым сторонними службами Windows.
Основными факторами, вызывающими падение процесса, являются:
ctfmon.exe при смене раскладки клавиатуры.7.70.027 содержали известные проблемы обработки памяти при работе с диалогами).Первым делом проанализируем версию исполняемых файлов платформы. Релиз 7.70.025 имеет ряд известных проблем при работе на серверных ОС Windows Server 2003 и Windows Server 2008 в режиме RDP.
Рассмотрим порядок обновления:
7.70.027.BIN (включая 1CV7.exe и BLang.dll) обновились до версии 7.70.0.27.Чаще всего падение BLang.dll происходит именно в момент переключения языка (с русского на английский и наоборот) во время редактирования ячеек. Процесс ctfmon.exe создает дополнительный поток ввода, который приводит к исключению Access Violation внутри 1С.
Выполним замену переключателя языков по шагам:
regedit на терминальном сервере.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run (или в аналогичную ветку HKEY_CURRENT_USER).ctfmon.exe.internat.exe, указав путь к файлу в системной папке Windows.Если на сервере установлена служба TeamViewer или аналогичные программы управления рабочим столом, проанализируем их влияние на работу терминальных сеансов. Внедрение перехватчиков ввода TeamViewer в RDP-сессии вызывает сбои в 1С 7.7.
services.msc).TeamViewer.Для предотвращения иных причин аварийного завершения программы рекомендуем выполнить следующие действия:
HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\<Имя Базы>\V7\<Имя Пользователя>.ВвестиДату, заменим его на отдельную форму ввода, так как стандартный вызов выделяет память, приводящую к сбоям при закрытии диалога.BIN платформы 1С создадим пустую папку 1cv7.exe.local и скопируем туда заведомо стабильные версии системных библиотек mfc42.dll и msvcrt.dll. Это изолирует 1С от сбоев системных библиотек Windows.*.lck в каталоге базы данных при выключенных сеансах, а также переименуем файл журнала 1cv7.mlg в папке SYSLOG для его пересоздания.Комплекс мер по обновлению платформы до релиза 7.70.027 и отсечению сторонних перехватчиков ввода (ctfmon.exe) полностью ликвидирует произвольное закрытие 1С 7.7 в терминальном режиме.