Почему вылетает 1С с записью дампа при работе в RDP и как решить эту проблему?

Системный администратор 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой IT и автоматизация бизнеса
← На главную

В практике администрирования систем на базе 1С часто встречается крайне неприятная ситуация: стабильно работавшая база данных начинает аварийно завершать работу у терминальных пользователей. Программа закрывается с системным сообщением «Запись дампа...», при этом очистка кэша помогает лишь на короткое время, а на следующий день проблема возвращается, особенно в первые утренние часы работы. Ситуация усугубляется, если база данных файловая, а пользователи работают на сервере под управлением Windows Server 2012 R2 через удаленный рабочий стол (RDP).

В этой статье мы подробно разберем причины возникновения таких критических сбоев, проанализируем взаимосвязь между терминальным режимом и платформой 1С, а также рассмотрим пошаговые методы устранения этой проблемы, начиная от простых системных настроек и заканчивая глубокой диагностикой.

Выясняем причины: почему вылеты происходят именно утром?

Симптом, при котором программа лавинообразно вылетает в первые 1–2 часа рабочего дня, а затем работает относительно стабильно, указывает на несколько ключевых триггеров:

  1. Запуск регламентных и фоновых заданий. В файловом варианте работы регламентные задания выполняются непосредственно в сессиях активных пользователей. Утром, когда первый пользователь заходит в систему, планировщик 1С пытается запустить все пропущенные за ночь задачи (обновление индекса полнотекстового поиска, загрузка курсов валют, классификаторов, отправка статистических данных). Это создает критическую нагрузку на файловую базу и оперативную память.
  2. Подключение принтеров RDP. При входе пользователей в терминальные сессии сервер пытается сопоставить локальные принтеры клиентов с сервером (через Easy Print или локальные драйверы). Как только 1С обращается к подсистеме печати для инициализации настроек страницы по умолчанию, происходит сбой в библиотеке отрисовки интерфейса.
  3. Пиковая активность антивируса. Утренняя массовая авторизация пользователей сопровождается созданием сотен временных файлов в их профилях. Антивирусное ПО начинает активно сканировать эти файлы, временно блокируя к ним доступ для платформы 1С, что вызывает аварийное завершение процесса.

Рассмотрим подробнее каждый метод решения этой проблемы.

Решение 1. Очистка и оптимизация регламентных заданий в файловой базе

Поскольку в файловой базе регламентные задания выполняются внутри сессий пользователей, повреждение файлов планировщика или одновременный запуск тяжелых задач гарантированно приводит к ошибке EXCEPTION_ACCESS_VIOLATION и записи дампа.

Выполним очистку планировщика заданий по шагам:

  1. Завершите сеансы всех пользователей и остановите службу терминалов (или временно заблокируйте новые подключения).
  2. Откройте каталог, в котором физически расположена база данных 1С.
  3. Найдите и полностью удалите служебную папку 1Cv8JobScheduler. В ней хранятся кэшированные настройки расписаний фоновых задач. При следующем запуске базы данных эта папка будет создана автоматически в чистом, неповрежденном виде.
  4. Запустите базу в режиме «Предприятие» под администратором. Перейдите в раздел Администрирование — Обслуживание — Регламентные операции — Регламентные и фоновые задания.
  5. Отключите неиспользуемые регламентные задания. Особое внимание уделите заданию «Обновление индекса ППД» (полнотекстового поиска). Если пользователи не пользуются глобальным поиском в программе, отключите полнотекстовый поиск полностью через настройки администрирования. Это существенно снизит нагрузку на систему в утренние часы.

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

/AllowExecuteScheduledJobs -Off

Решение 2. Устранение проблем с перенаправлением принтеров в RDP

Несовместимость драйверов принтеров клиентов с операционной системой сервера — одна из самых частых скрытых причин падения 1С с дампом памяти при работе через RDP. При попытке инициализировать печатную форму библиотека 1С frame.dll или moxel.dll аварийно завершает процесс из-за некорректного ответа драйвера принтера.

Проанализируем ситуацию и выполним следующие настройки:

  1. Проверка логов Windows: Откройте на сервере «Просмотр событий» (Event Viewer), перейдите в раздел «Логи Windows» — «Приложение». Найдите ошибку (Error) с источником Application Error в момент вылета 1С. Посмотрите, какой модуль указан как сбойный (Faulting module). Если там фигурируют библиотеки frame.dll, moxel.dll или файлы драйверов принтеров (например, HP, Kyocera, Xerox), проблема однозначно в печати.
  2. Отключение перенаправления: В качестве теста отключите в свойствах подключения RDP-клиента (вкладка «Локальные ресурсы») галочку «Принтеры». Если вылеты прекратятся, необходимо навести порядок в драйверах на сервере.
  3. Использование универсальных драйверов: Удалите с сервера «родные» драйверы принтеров клиентов, заменив их на универсальные (HP Universal Print Driver, Kyocera KX Driver) или настройте использование технологии групповых политик Easy Print (Использовать в первую очередь драйвер принтера Easy Print Easy). Это изолирует процесс печати от нестабильного кода сторонних разработчиков.
  4. Смена принтера по умолчанию: Установите на сервере в сессии пользователя принтером по умолчанию виртуальный принтер Microsoft XPS Document Writer или Microsoft Print to PDF.

Решение 3. Настройка исключений антивируса и DEP

Защитные механизмы операционной системы Windows Server могут ошибочно принимать действия платформы 1С по динамическому выделению памяти за вирусную активность и принудительно завершать процесс.

Разберем, как правильно настроить исключения системы предотвращения выполнения данных (DEP):

  1. Откройте «Панель управления» сервера, перейдите в раздел Система — Дополнительные параметры системы.
  2. На вкладке «Дополнительно» в разделе «Быстродействие» нажмите кнопку «Параметры».
  3. Перейдите на вкладку «Предотвращение выполнения данных» (DEP).
  4. Если у вас включен режим «Включить DEP для всех программ и служб, кроме выбранных ниже», обязательно добавьте в этот список исполняемые файлы платформы 1С:

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

Решение 4. Автоматизация очистки кэша пользователей

Поскольку временное решение с ручной очисткой кэша помогает пользователям отработать день без сбоев, можно автоматизировать этот процесс, пока ведется поиск фундаментальной причины сбоя.

Для этого создадим простой пакетный скрипт очистки кэша перед каждым запуском программы. Напишем код файла 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"

Этот сценарий гарантирует, что каждый рабочий день пользователя начнется с «чистого листа», исключая накопление битых индексных файлов кэша.

Решение 5. Настройка Технологического журнала для точного поиска проблемы

Если вышеописанные методы не привели к мгновенному результату, необходимо задействовать встроенный инструмент диагностики платформы — Технологический журнал (ТЖ).

Разберем по шагам, как настроить сбор логов аварийных завершений:

  1. В папке настроек платформы (по умолчанию для 64-битной версии на сервере это каталог C:\Program Files\1cv8\conf) создайте текстовый файл с именем logcfg.xml.
  2. Напишем конфигурацию для отслеживания только критических событий падения системы (исключений) и дампов:

<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>
  1. Создайте на диске C:\ папку 1C_Logs и дайте права на запись в нее группе пользователей «Все» (так как сессии RDP запускаются от имени разных учетных записей, у них должен быть доступ на запись логов в эту папку).
  2. При следующем вылете программы зайдите в созданную папку. Платформа запишет текстовые файлы логов, где в строках с событием EXCP будет четко указана причина падения программы (например, обращение к защищенной памяти, конфликт СУБД или ошибка выполнения кода конкретного общего модуля конфигурации УНФ).

Решение 6. Кардинальный выход: публикация файловой базы на веб-сервере

Работа более чем 5 пользователей в файловой базе через RDP — это всегда риск стабильности из-за ограничений сетевого доступа и файловых блокировок Windows. Самым надежным архитектурным решением является перевод пользователей с терминального доступа на работу через Тонкий клиент с публикацией базы на веб-сервере (IIS или Apache).

Почему это решает все проблемы?

Для публикации базы достаточно установить на сервере бесплатный веб-сервер IIS (входит в роль Web Server в Windows Server 2012 R2), запустить Конфигуратор 1С от имени Администратора и выбрать пункт меню Администрирование — Публикация на веб-сервере. После этого пользователи смогут подключаться к базе по HTTP/HTTPS ссылкам прямо из тонкого клиента.

← На главную