При работе с файловыми базами данных «1С:Предприятие», особенно опубликованными на веб-сервере под управлением Apache или IIS, системные администраторы часто сталкиваются с труднодиагностируемыми сбоями. Одним из наиболее неприятных является аварийное завершение работы системы с ошибкой Microsoft Visual C++ Runtime Library при попытке запуска регламентных или фоновых заданий. При этом кратковременный результат приносит очистка служебной папки 1Cv8JobScheduler, однако через некоторое время проблема возвращается.
В этой статье мы подробно проанализируем причины возникновения данной ошибки на примере интеграции конфигурации «1С:Фитнес Платформа» со СКУД-контроллерами Sigur, разберем взаимосвязь аппаратных сбоев и логической структуры базы данных, а также предоставим пошаговый алгоритм полного устранения этой проблемы.
Проанализируем исходные технические условия, при которых возникает сбой:
8.3.11.3034.1Cv8JobScheduler временно решает проблему, но вскоре Runtime Error повторяется.Для того чтобы понять природу этой ошибки, нам необходимо детально изучить системные журналы Windows (Event Viewer), так как сама платформа 1С в данном случае аварийно закрывается без записи подробностей в свой технологический журнал.
При возникновении краха приложения первым делом обратимся к средству просмотра событий Windows. Нам интересны два журнала: Application (Приложение) и System (Система).
В журнале Application фиксируется событие краха процесса (Event ID 1000):
Имя сбойного приложения: 1cv8c.exe, версия: 8.3.11.3034
Имя сбойного модуля: FTD2XX.dll, версия: 3.1.7.1
Код исключения: 0x40000015
Смещение ошибки: 0x0000edb7
Путь сбойного приложения: C:\Program Files (x86)\1cv8\8.3.11.3034\bin\1cv8c.exe
Путь сбойного модуля: C:\Program Files (x86)\1cv8\8.3.10.2639\bin\FTD2XX.dll
Этот лог открывает нам ключевую причину сбоя на программном уровне. Обратите внимание на пути: запущенное приложение версии 8.3.11.3034 по какой-то причине пытается загрузить динамическую библиотеку FTD2XX.dll из каталога совершенно другой, устаревшей версии платформы 8.3.10.2639. Несовместимость версий библиотеки и исполняемого файла приводит к критической ошибке памяти (код исключения 0x40000015 — статус фатального выхода из приложения), что и вызывает окно Microsoft Visual C++ Runtime Library.
Теперь обратимся к журналу System. Там мы обнаруживаем регулярные критические события от источника Microsoft-Windows-Kernel-Power с кодом события 41 (63):
Критический, Microsoft-Windows-Kernel-Power, Код события: 41, Категория: (63)
Описание: Система перезагрузилась, завершив работу с ошибками. Возможные причины ошибки: система перестала отвечать на запросы, произошел критический сбой или неожиданно отключилось питание.
Эти записи свидетельствуют о том, что компьютер, выполняющий роль сервера, систематически подвергался аварийному отключению питания или внезапным перезагрузкам. Выясним, как эти два фактора — конфликт DLL и проблемы с электропитанием — приводят к краху регламентных заданий.
Библиотека FTD2XX.dll является драйвером прямого доступа (D2XX) для микросхем компании FTDI. Эти чипы повсеместно используются в преобразователях интерфейсов (например, USB в RS-485/RS-232), которые связывают сервер со СКУД-контроллерами Sigur. Также данная библиотека поставляется вместе с платформой «1С:Предприятие» для обеспечения работы с аппаратными ключами защиты HASP.
Конфликт версий и загрузка библиотеки из каталога старой платформы происходят из-за особенностей поиска DLL операционной системой Windows (DLL Search Order):
PATH.PATH сохранили пути к каталогу bin предыдущей версии (в нашем случае 8.3.10.2639), система загружает старый драйвер, вызывая конфликт адресов памяти в адресном пространстве нового процесса 1С.Папка 1Cv8JobScheduler, расположенная внутри каталога файловой базы данных, хранит в себе информацию о состоянии планировщика регламентных заданий, таблицы очередей и файл блокировки exec.lck.
Когда база данных опубликована на Apache, за выполнение регламентных заданий отвечает отдельный фоновый сеанс веб-сервера. Он постоянно перезаписывает файлы в папке 1Cv8JobScheduler. В момент внезапного пропадания электропитания (ошибки Kernel-Power 41) происходит физический обрыв операции записи. Это приводит к следующим последствиям:
1Cv8JobScheduler временно помогает, так как платформа создает структуру заново, но как только новые файлы попадают на поврежденную область диска или сталкиваются со старым драйвером FTD2XX.dll, система снова падает.Для полного устранения сбоя необходимо провести комплексные работы как на аппаратном уровне, так и на уровне операционной системы и самой платформы 1С. Разберем этот процесс по шагам.
Прежде чем приступать к программным манипуляциям, устраним первопричину — некорректное выключение компьютера:
chkdsk C: /f /r
Примечание: Если база данных находится на другом разделе (например, D:), выполните команду для соответствующего тома. Потребуется перезагрузка системы для монопольного доступа к системному диску.
Для предотвращения конфликтов динамических библиотек выполним глубокую очистку окружения:
8.3.10.2639). Оставьте только актуальный рабочий релиз.C:\Program Files\1cv8\C:\Program Files (x86)\1cv8\Win + Break (или откройте «Свойства системы»).Path, нажмите «Изменить» и удалите из списка любые пути, ведущие к старым версиям 1С.regsvr32 "C:\Program Files (x86)\1cv8\8.3.11.3034\bin\FTD2XX.dll"
После устранения системных конфликтов необходимо исправить возможные внутренние повреждения в самой базе данных 1С:
chdbfl.exe (она находится в каталоге bin установленной платформы 1С).1Cv8.1CD, установите флаг «Исправлять обнаруженные ошибки» и запустите проверку.1Cv8JobScheduler, чтобы платформа создала планировщик на исправленном и чистом диске.Убедимся, что процесс веб-сервера имеет беспрепятственный доступ к файлам планировщика:
SYSTEM или Network Service).SYSTEM (или конкретному пользователю, от имени которого работает служба Apache) предоставлены «Полные права» на чтение, запись и изменение всех файлов и подкаталогов в этой папке.Мы проанализировали сложную проблему, в которой программный сбой платформы 1С оказался следствием наложения аппаратных проблем на системные ошибки ОС Windows. Регулярные отключения питания приводили к разрушению структуры папки планировщика 1Cv8JobScheduler, а старые записи путей в операционной системе заставляли 1С загружать неподходящую версию библиотеки оборудования FTD2XX.dll.
Проведение комплексной диагностики диска, обеспечение бесперебойного питания, удаление старых релизов платформы и проверка базы данных утилитами 1С позволяют гарантированно избавиться от подобных критических ошибок и обеспечить стабильную круглосуточную работу регламентных заданий и интеграционных сервисов.