В практике администрирования систем на базе 1С часто встречается крайне неприятная ситуация: стабильно работавшая база данных начинает аварийно завершать работу у терминальных пользователей. Программа закрывается с системным сообщением «Запись дампа...», при этом очистка кэша помогает лишь на короткое время, а на следующий день проблема возвращается, особенно в первые утренние часы работы. Ситуация усугубляется, если база данных файловая, а пользователи работают на сервере под управлением Windows Server 2012 R2 через удаленный рабочий стол (RDP).
В этой статье мы подробно разберем причины возникновения таких критических сбоев, проанализируем взаимосвязь между терминальным режимом и платформой 1С, а также рассмотрим пошаговые методы устранения этой проблемы, начиная от простых системных настроек и заканчивая глубокой диагностикой.
Симптом, при котором программа лавинообразно вылетает в первые 1–2 часа рабочего дня, а затем работает относительно стабильно, указывает на несколько ключевых триггеров:
Рассмотрим подробнее каждый метод решения этой проблемы.
Поскольку в файловой базе регламентные задания выполняются внутри сессий пользователей, повреждение файлов планировщика или одновременный запуск тяжелых задач гарантированно приводит к ошибке EXCEPTION_ACCESS_VIOLATION и записи дампа.
Выполним очистку планировщика заданий по шагам:
1Cv8JobScheduler. В ней хранятся кэшированные настройки расписаний фоновых задач. При следующем запуске базы данных эта папка будет создана автоматически в чистом, неповрежденном виде.Для временного тестирования стабильности системы без регламентных задач можно запустить базу с параметром отключения планировщика. Для этого в дополнительных параметрах запуска информационной базы пропишите команду:
/AllowExecuteScheduledJobs -Off
Несовместимость драйверов принтеров клиентов с операционной системой сервера — одна из самых частых скрытых причин падения 1С с дампом памяти при работе через RDP. При попытке инициализировать печатную форму библиотека 1С frame.dll или moxel.dll аварийно завершает процесс из-за некорректного ответа драйвера принтера.
Проанализируем ситуацию и выполним следующие настройки:
Application Error в момент вылета 1С. Посмотрите, какой модуль указан как сбойный (Faulting module). Если там фигурируют библиотеки frame.dll, moxel.dll или файлы драйверов принтеров (например, HP, Kyocera, Xerox), проблема однозначно в печати.Microsoft XPS Document Writer или Microsoft Print to PDF.Защитные механизмы операционной системы Windows Server могут ошибочно принимать действия платформы 1С по динамическому выделению памяти за вирусную активность и принудительно завершать процесс.
Разберем, как правильно настроить исключения системы предотвращения выполнения данных (DEP):
C:\Program Files\1cv8\8.3.X.XXXX\bin\1cv8.exe
и тонкий клиент:
C:\Program Files\1cv8\8.3.X.XXXX\bin\1cv8c.exe
Также добавьте папки с базами данных, каталоги кэша пользователей и процессы 1cv8.exe в список исключений вашего серверного антивирусного ПО. Кэш 1С находится по следующим путям, которые требуют исключения из сканирования «на лету»:
%USERPROFILE%\AppData\Local\1C\1Cv8
%USERPROFILE%\AppData\Roaming\1C\1Cv8
Поскольку временное решение с ручной очисткой кэша помогает пользователям отработать день без сбоев, можно автоматизировать этот процесс, пока ведется поиск фундаментальной причины сбоя.
Для этого создадим простой пакетный скрипт очистки кэша перед каждым запуском программы. Напишем код файла clear_cache.bat, который можно разместить на рабочих столах пользователей вместо стандартного ярлыка 1С:
@echo off
rem Завершаем процессы 1С, если они зависли в фоне
taskkill /f /im 1cv8.exe
taskkill /f /im 1cv8c.exe
rem Удаляем папки локального и роумингового кэша
for /d %%i in ("%USERPROFILE%\AppData\Local\1C\1Cv8\*") do rmdir /s /q "%%i"
for /d %%i in ("%USERPROFILE%\AppData\Roaming\1C\1Cv8\*") do rmdir /s /q "%%i"
rem Запускаем 1С Предприятие обратно
start "" "C:\Program Files (x86)\1cv8\common\1cestart.exe"
Этот сценарий гарантирует, что каждый рабочий день пользователя начнется с «чистого листа», исключая накопление битых индексных файлов кэша.
Если вышеописанные методы не привели к мгновенному результату, необходимо задействовать встроенный инструмент диагностики платформы — Технологический журнал (ТЖ).
Разберем по шагам, как настроить сбор логов аварийных завершений:
C:\Program Files\1cv8\conf) создайте текстовый файл с именем logcfg.xml.
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\1C_Logs" history="24">
<event>
<eq property="Name" value="EXCP"/>
</event>
<event>
<eq property="Name" value="PROC"/>
</event>
<property name="All"/>
</log>
</config>
C:\ папку 1C_Logs и дайте права на запись в нее группе пользователей «Все» (так как сессии RDP запускаются от имени разных учетных записей, у них должен быть доступ на запись логов в эту папку).EXCP будет четко указана причина падения программы (например, обращение к защищенной памяти, конфликт СУБД или ошибка выполнения кода конкретного общего модуля конфигурации УНФ).Работа более чем 5 пользователей в файловой базе через RDP — это всегда риск стабильности из-за ограничений сетевого доступа и файловых блокировок Windows. Самым надежным архитектурным решением является перевод пользователей с терминального доступа на работу через Тонкий клиент с публикацией базы на веб-сервере (IIS или Apache).
Почему это решает все проблемы?
w3wp.exe или httpd.exe). У пользователей на компьютерах или в терминале запускается облегченный Тонкий клиент.1Cv8.1CD.Для публикации базы достаточно установить на сервере бесплатный веб-сервер IIS (входит в роль Web Server в Windows Server 2012 R2), запустить Конфигуратор 1С от имени Администратора и выбрать пункт меню Администрирование — Публикация на веб-сервере. После этого пользователи смогут подключаться к базе по HTTP/HTTPS ссылкам прямо из тонкого клиента.