При настройке обмена с государственными информационными системами (ИС МП "Честный знак", ЕГАИС, ЭДО) пользователи часто сталкиваются с критической ошибкой: программа 1С просто закрывается без каких-либо предупреждений в момент добавления или выбора сертификата электронной подписи. Чаще всего в логах Windows эта ошибка фиксируется в модуле ext.dll. Разберем подробно, почему это происходит и как стабилизировать работу системы.
Давайте проанализируем ситуацию. Аварийное завершение (crash) происходит в момент обращения платформы к программному интерфейсу криптопровайдера (CSP), например, КриптоПро CSP. Основная нагрузка в этот момент ложится на библиотеку ext.dll, которая отвечает за взаимодействие 1С с внешними компонентами и криптографическими функциями операционной системы.
Выделим основные группы причин:
Первым делом проверим версию используемой платформы. Разработчики 1С выпустили исправления для этой ошибки в конкретных минорных релизах. Рассмотрим минимально необходимые версии, где работа с криптографией была стабилизирована:
Важно помнить: если вы работаете в клиент-серверном варианте, платформа должна быть обновлена и на стороне сервера, и на стороне клиента. Часто системные администраторы обновляют только сервер, а клиентские машины запускают старую версию из кэша или локальной папки, что приводит к сохранению ошибки.
Выясним причину зависимости 1С от операционной системы. Криптографические операции активно используют библиотеки среды выполнения Visual C++. Для корректной работы ext.dll необходимо установить актуальный пакет Microsoft Visual C++ Redistributable 2015-2022. Рекомендуем устанавливать сразу обе версии — x86 и x64, так как компоненты платформы могут обращаться к разным библиотекам.
Также проанализируем состояние обновлений Windows. В конце 2019 года Microsoft изменила алгоритмы проверки цепочек сертификатов. Если ваша ОС (особенно Windows 10 или Server 2016) давно не обновлялась, системный API CryptoAPI может возвращать ошибку, которую 1С не в состоянии обработать корректно. Убедитесь, что установлены все накопительные пакеты обновления.
Если обновление платформы не помогло, нам потребуется "заглянуть внутрь" процесса в момент падения. Для этого настроим Технологический журнал (ТЖ). Нам нужно отловить события исключительных ситуаций и контекст их возникновения.
Создадим файл logcfg.xml в папке conf вашей платформы со следующим содержимым:
<config xmlns="http://v8.1c.ru/7.4/config">
<log location="C:\LOGS\1C" history="2">
<event>
<eq property="Name" value="EXCP"/>
</event>
<event>
<eq property="Name" value="EXCPCNTX"/>
</event>
<property name="All"/>
</log>
</config>
После настройки запустите 1С, воспроизведите падение и изучите файлы в папке C:\LOGS\1C. Ищите строки с текстом Access Violation или указанием на ext.dll. Это поможет точно определить, на какой операции (например, ОтрытьХранилище или ПолучитьСертификат) происходит сбой. Для удобного чтения полученных файлов можно использовать инструмент для наглядного разбора технологического журнала.
Рассмотрим ситуацию с точки зрения криптопровайдера. Иногда 1С аварийно завершается, потому что пытается опросить считыватель, который физически отсутствует или некорректно настроен в КриптоПро (например, старый токен, который остался в списке устройств).
Выполним следующие действия:
1cv8.exe, если система безопасности Windows блокирует выполнение кода в области памяти, выделенной под криптографию.Также проанализируем реестр. Если вы переносили сертификаты или часто их переустанавливали, в ветке HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates\My могут остаться "мусорные" записи. Попробуйте экспортировать нужный сертификат в файл .cer, затем через КриптоПро удалить его вместе с контейнером и установить заново, выбрав опцию "Установить сертификат в личное хранилище".
Если проблему не удается решить на уровне толстого или тонкого клиента, разберем альтернативный вариант. Попробуйте запустить 1С через веб-клиент (в браузере Chrome или Яндекс.Браузер) с установленным расширением для работы с криптографией. В этом случае взаимодействие с сертификатом идет через браузерное расширение, которое использует другие механизмы вызова функций CSP, что часто позволяет избежать падения ext.dll.
Подведем итог: чаще всего проблема решается комбинацией обновления платформы до версий 8.3.17.1851 / 8.3.18.1208 и приведением в порядок системных библиотек Visual C++. Если же ошибка сохраняется только на одном конкретном ПК, наиболее эффективным решением будет полная переустановка криптопровайдера и очистка веток реестра SystemCertificates.