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

Системный администратор 1С v7.7 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

В процессе работы пользователей в конфигурации «Торговля и Склад» (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

Модуль BLang.dll отвечает за обработку встроенного языка платформы 1С 7.7, а также за взаимодействие с устройствами ввода и переключение языковых раскладок клавиатуры. Поскольку платформа 1С 7.7 является однопоточным 32-разрядным приложением, работающим в однобайтовом режимe ANSI, она крайне чувствительна к внешним потокам и перехватчикам ввода (хукам), создаваемым сторонними службами Windows.

Основными факторами, вызывающими падение процесса, являются:

  1. Конфликт со службой текстового ввода Windows ctfmon.exe при смене раскладки клавиатуры.
  2. Вмешательство фоновых утилит удаленного доступа (например, службы TeamViewer), которые регистрируют в системе виртуальные устройства ввода.
  3. Использование устаревшего релиза платформы (релизы ниже 7.70.027 содержали известные проблемы обработки памяти при работе с диалогами).
  4. Повреждение пользовательских настроек интерфейса в реестре Windows или временных файлов блокировок.

Способ 1. Обновление платформы до релиза 7.70.027

Первым делом проанализируем версию исполняемых файлов платформы. Релиз 7.70.025 имеет ряд известных проблем при работе на серверных ОС Windows Server 2003 и Windows Server 2008 в режиме RDP.

Рассмотрим порядок обновления:

  1. Завершим все активные сеансы пользователей и остановим работу с базой данных.
  2. Установим официальное обновление платформы 1С:Предприятие 7.7 до релиза 7.70.027.
  3. Убедимся, что все DLL-файлы в каталоге BIN (включая 1CV7.exe и BLang.dll) обновились до версии 7.70.0.27.

Способ 2. Отключение ctfmon.exe и замена на internat.exe

Чаще всего падение BLang.dll происходит именно в момент переключения языка (с русского на английский и наоборот) во время редактирования ячеек. Процесс ctfmon.exe создает дополнительный поток ввода, который приводит к исключению Access Violation внутри 1С.

Выполним замену переключателя языков по шагам:

  1. Откроем редактор реестра regedit на терминальном сервере.
  2. Перейдем в ветку реестра автозапуска: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run (или в аналогичную ветку HKEY_CURRENT_USER).
  3. Удалим или отключим запуск приложения ctfmon.exe.
  4. Добавим запуск классического переключателя раскладки internat.exe, указав путь к файлу в системной папке Windows.
  5. В настройках системы отключим дополнительные текстовые службы (Text Services Framework).

Способ 3. Отключение фоновых служб удаленного контроля

Если на сервере установлена служба TeamViewer или аналогичные программы управления рабочим столом, проанализируем их влияние на работу терминальных сеансов. Внедрение перехватчиков ввода TeamViewer в RDP-сессии вызывает сбои в 1С 7.7.

  1. Откроем оснастку «Службы» (services.msc).
  2. Найдем службу TeamViewer.
  3. Остановим службу и переведем тип запуска в режим Отключено или Вручную.
  4. Проверим работу операторов в 1С без запущенных фоновых утилит.

Способ 4. Дополнительные технические оптимизации

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

  1. Очистка пользовательских настроек: При частых падениях удалим ветку реестра с настройками формы конкретного пользователя по адресу HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\<Имя Базы>\V7\<Имя Пользователя>.
  2. Оптимизация метода ВвестиДату: Если в конфигурации часто используется системный диалог ВвестиДату, заменим его на отдельную форму ввода, так как стандартный вызов выделяет память, приводящую к сбоям при закрытии диалога.
  3. Фиксация системных библиотек (DLL Redirection): В каталоге BIN платформы 1С создадим пустую папку 1cv7.exe.local и скопируем туда заведомо стабильные версии системных библиотек mfc42.dll и msvcrt.dll. Это изолирует 1С от сбоев системных библиотек Windows.
  4. Очистка временных файлов: Удалим все файлы временных блокировок с расширением *.lck в каталоге базы данных при выключенных сеансах, а также переименуем файл журнала 1cv7.mlg в папке SYSLOG для его пересоздания.

Комплекс мер по обновлению платформы до релиза 7.70.027 и отсечению сторонних перехватчиков ввода (ctfmon.exe) полностью ликвидирует произвольное закрытие 1С 7.7 в терминальном режиме.

← На главную