Ситуация, когда при попытке прикрепить обычный файл Word или Excel программа 1С мгновенно закрывается с сообщением «Аварийное завершение работы», является критической для бизнес-процессов. Особенно странным кажется то, что файлы форматов PDF или JPG добавляются без каких-либо проблем. В этой статье мы подробно разберем, почему возникает этот конфликт, проанализируем техническую подоплеку и рассмотрим несколько эффективных способов решения проблемы.
Для начала проанализируем, что именно делает 1С в момент добавления офисного документа. Платформа пытается не просто сохранить файл в базу, но и извлечь из него текстовое содержимое для обеспечения возможности полнотекстового поиска. Для этого используется программный объект ИзвлечениеТекста. В операционных системах Windows 1С не делает это самостоятельно, а обращается к системному интерфейсу IFilter.
Интерфейс IFilter — это технология Microsoft, которая позволяет сторонним приложениям «читать» содержимое закрытых форматов файлов. Для файлов .docx и .xlsx этот интерфейс реализуется библиотеками, которые поставляются вместе с Microsoft Office (например, OFFFILTX.DLL).
Проблема кроется в недавних обновлениях Microsoft Office (начиная с января 2026 года). Новые версии компонентов Office начали использовать актуальные версии библиотек среды выполнения Visual C++ (CRT), в частности msvcp140.dll и vcruntime140.dll (версии 14.40 и выше). В то же время в папке bin платформы 1С:Предприятие часто лежат собственные копии этих библиотек старых версий (например, 14.16). Когда 1С загружает компонент Office для извлечения текста, возникает конфликт версий: компонент ожидает новые функции в DLL, а в памяти процесса уже загружена старая библиотека из папки 1С. Это приводит к ошибке Access Violation (0xc0000005) и мгновенному падению приложения.
Если ваша архитектура «клиент-серверная», самым простым и надежным решением будет запретить клиентскому приложению пытаться извлечь текст самостоятельно. Рассмотрим, как это сделать на примере популярных конфигураций.
В конфигурации 1С:Документооборот 3.0 выполним следующие шаги:
В конфигурации 1С:Документооборот 2.1 путь будет похожим: Настройка и администратирование — Настройка программы — Работа с файлами — флаг Извлекать тексты только на сервере.
Почему это помогает: При включении этой опции клиентское приложение просто передает файл на сервер. Сервер 1С (обычно работающий под другой учетной записью или на другой ОС) берет задачу по извлечению текста на себя. Поскольку на сервере не запущен интерактивный сеанс пользователя с локальными конфликтами библиотек, падения клиента не происходит.
Если у вас файловая база или вы не можете включить серверное извлечение, придется устранить причину конфликта на конкретных рабочих станциях. Проанализируем, как обновить библиотеки вручную.
Рассмотрим пошаговый алгоритм:
C:\Windows\System32.msvcp140.dll (и желательно vcruntime140.dll). Убедимся через «Свойства» — «Подробно», что их версия выше, чем те, что лежат в папке 1С.C:\Program Files\1cv8\8.3.27.XXXX\bin\.Альтернативный вариант: Некоторые администраторы предпочитают просто переименовать или удалить файлы msvcp140.dll и vcruntime140.dll непосредственно из папки bin платформы 1С. В этом случае система Windows, не найдя библиотек в папке приложения, автоматически загрузит их из System32, где уже лежат обновленные версии. Это зачастую является более «чистым» решением.
В ситуациях, когда сервер 1С работает под управлением старых версий Windows Server или на Linux (через вспомогательные сервисы), извлечение текстов может давать сбои. Для корректной работы серверного извлечения рекомендуем установить официальный пакет компонентов от Microsoft.
Разберем процесс настройки сервера:
ragent.Это позволит серверу эффективно обрабатывать файлы .docx, .xlsx, .pptx и другие, даже если на самом сервере не установлен пакет MS Office.
Если вы столкнулись с этой проблемой в нетиповой конфигурации или хотите добавить «защиту» от падения в коде, можно проанализировать место вызова извлечения. Проблема обычно возникает при вызове метода ИзвлечьТекст() или ПолучитьТекст() объекта ИзвлечениеТекста.
Посмотрим на пример безопасного вызова в модуле РаботаСФайламиСлужебныйКлиент:
// В функции ЗакончитьРедактированиеСРасширением...
Если Не ОбщиеНастройкиРаботыСФайлами.ИзвлекатьТекстыФайловНаСервере Тогда
Попытка
// Здесь происходит критическая ошибка, которую Попытка-Исключение не всегда ловит
СведенияОФайле.АдресВременногоХранилищаТекста = ИзвлечьТекстВоВременноеХранилище(ПутьКФайлу);
Исключение
ЗаписьЖурналаРегистрации("Файлы.ОшибкаИзвлеченияТекста", УровеньЖурналаРегистрации.Предупреждение,,,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецЕсли;
Однако помните: так как ошибка происходит на уровне обращения к памяти (Access Violation) внутри системной DLL, блок Попытка — Исключение в языке 1С может не сработать, и приложение все равно закроется. Поэтому приоритетными остаются решения №1 и №2.
Подводя итог нашему анализу, отметим, что ошибка имеет глобальный характер и связана с обновлением безопасности продуктов Microsoft. Фирма «1С» в новых сборках платформы (начиная с 8.3.25.15xx и выше) уже начала поставлять обновленные библиотеки в комплекте, поэтому обновление платформы 1С до самого последнего релиза также является рекомендуемым способом решения проблемы.
Если оперативное обновление платформы невозможно, используйте перенос извлечения на сервер или обновление файла msvcp140.dll в каталоге bin. Эти действия позволят пользователям вернуться к нормальной работе с документами без досадных «вылетов» программы.