Каждый технический специалист или системный администратор, обслуживающий программные продукты «1С», рано или поздно сталкивается с ситуацией загадочного поведения системы. Представим картину: у клиента успешно работала файловая база «1С:Бухгалтерия 3.0» (базовая или проф-версия), компьютер обладает отличными аппаратными характеристиками (процессор Core i5, достаточный объем оперативной памяти, быстрые SSD-накопители), но в один прекрасный день программа начинает намертво зависать через минуту после старта. При этом операционная система продолжает работать стабильно, процессор не нагружен, а диспетчер задач показывает у процесса 1cv8.exe унылый статус «Не отвечает».
В этой статье мы подробно разберем, почему возникает подобный сбой, проведем детальный анализ причин конфликта платформы «1С:Предприятие» с компонентами криптографии и рассмотрим несколько эффективных способов решения проблемы без радикальной переустановки всей операционной системы.
Проанализируем ситуацию, которая часто затрагивает пользователей операционной системы Windows 7 (особенно x64) при переходе на новые версии платформы (начиная с 8.3.16, 8.3.17 и выше).
Типичные симптомы неисправности выглядят следующим образом:
Первые интуитивные действия администратора — очистить кэш, выполнить тестирование и исправление (ТиИ) базы данных, проверить жесткий диск на ошибки или временно отключить антивирус — обычно не приносят никакого результата. Проблема сохраняется даже при переносе базы данных на другой, полностью исправный компьютер. Это явно указывает на то, что ошибка кроется в самой «начинке» базы данных и ее взаимодействии с системным окружением.
Для точной локализации проблемы обратимся к анализу технологического журнала и дампов памяти. Официальная техническая поддержка фирмы «1С» при анализе подобных дампов указывает на сбой в работе внешней компоненты криптографии:
«Проблема в работе ВК (1CExtIntgr82) -> ЭДОNativeCryptS»
В коде Библиотеки стандартных подсистем (БСП) бесконечный цикл ожидания (deadlock) обычно происходит в общем модуле ЭлектроннаяПодписьСлужебный при попытке выполнить метод проверки сертификата. Посмотрим на этот участок кода:
МенеджерКриптографииДляПроверки = Новый МенеджерКриптографии("", "", 1);
МенеджерКриптографииДляПроверки.ПроверитьСертификат(СертификатДляПроверки, РежимыПроверкиСертификата);
Именно на вызове метода ПроверитьСертификат поток программы засыпает навечно. Выясним, почему внешняя компонента ExtraCryptoAPI вызывает такой коллапс.
Рассмотрим подробнее физику процесса. В последних релизах конфигураций «1С» разработчики обновили механизмы интеграции с системами документооборота и отчетности (1С-Отчетность, 1С-ЭДО). Для этого используется внешняя компонента, которая обращается к системным библиотекам и криптопровайдеру (чаще всего КриптоПро CSP).
При запуске программы или открытии ключевых форм система в фоновом режиме пытается проверить валидность установленных в системе сертификатов электронной цифровой подписи (ЭЦП). Этот процесс включает в себя следующие шаги:
На операционной системе Windows 7 новые версии платформы «1С» некорректно обрабатывают сетевые тайм-ауты. Если у клиента установлено несколько контейнеров закрытых ключей (например, старые, просроченные или недооформленные сертификаты без привязанной открытой части), библиотека криптографии отправляет запрос к КриптоПро. Если криптопровайдер натыкается на поврежденный контейнер, системная утилита зависает в ожидании ответа от пользователя или токена, увлекая за собой весь процесс 1С.
Вторая проблема — проверка цепочки сертификатов через интернет. Если сетевой запрос к серверу удостоверяющего центра (УЦ) для загрузки списков CRL блокируется брандмауэром или происходит сбой маршрутизации, компонента ExtraCryptoAPI уходит в бесконечный цикл ожидания ответа, блокируя весь графический интерфейс пользователя.
Разберем по шагам рабочие методы устранения этой проблемы.
Если вам необходимо восстановить работоспособность бухгалтерии клиента в кратчайшие сроки, самым быстрым решением является откат платформы на стабильную ветку. Опытным путем установлено, что старые версии платформы не используют новые проблемные функции получения списка ключей напрямую через компоненту.
8.3.15.1830 (или любую другую стабильную версию из 15-й ветки).8.3.15.1830.Важное предупреждение: Данный способ является временным костылем. Со временем новые релизы «1С:Бухгалтерии» потребуют обязательного обновления платформы до более высоких версий, поэтому рекомендуется настроить систему для работы на актуальных релизах.
Поскольку корень зависания часто кроется в бесконечной сетевой проверке аннулирования сертификатов через службы Windows 7, мы можем отключить этот механизм на уровне операционной системы.
Выполните следующие действия:
Присутствие в операционной системе «битых» или недооформленных контейнеров КриптоПро гарантированно приводит к зависанию компоненты 1С на новых платформах. Обычное удаление старых ключей через графический интерфейс КриптоПро CSP не всегда полностью очищает системный реестр Windows.
Проведем процедуру глубокой очистки криптопровайдера:
cspclean.exe от имени администратора. Она полностью удалит все остаточные записи, поврежденные ветки реестра и некорректные ссылки на лицензии и контейнеры.В некоторых случаях фирма «1С» оперативно выпускает исправления (патчи) для обхода подобных ошибок. Если в вашей базе установлена автозагрузка исправлений, программа могла получить патч, содержащий некорректную версию внешней компоненты.
Посмотрим, как можно исправить ситуацию изнутри системы:
EF_000XXXXX или EF_40027558, попробуйте их деактивировать или полностью удалить.ВнешниеКомпоненты. Найдите там компоненту ExtraCryptoAPI и попробуйте обновить ее версию до актуальной или, наоборот, вернуть стабильную предыдущую версию библиотеки.Подводя итог, отметим: зависание «1С:Бухгалтерии 3.0» на этапе запуска — это комплексная проблема стыка устаревшей операционной системы Windows 7, сетевых политик проверки сертификатов CRL и новой логики работы платформы 1С с криптографическими компонентами. Применив предложенные шаги по отключению проверки отзывов в свойствах браузера и глубокой очистке контейнеров КриптоПро с помощью утилиты cspclean, вы сможете вернуть базу данных к стабильной и быстрой работе на самых современных версиях платформы «1С:Предприятие».