Почему возникает ошибка 10054 при создании внешней обработки в 1С:Предприятие 8.3 и как её исправить?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

При работе в клиент-серверном варианте платформы 1С:Предприятие 8.3 программисты и системные администраторы часто сталкиваются с ситуацией, когда попытка программного создания или открытия внешней обработки приводит к аварийному завершению сеанса. Ошибка сопровождается сообщением "Удаленный хост принудительно разорвал существующее подключение (10054)". В этой статье мы подробно разберем причины возникновения этой проблемы, проанализируем логи технологического журнала и рассмотрим эффективные способы решения.

Суть проблемы и контекст возникновения

Рассмотрим типичную ситуацию: конфигурация «Управление производственным предприятием» (УПП) версии 1.3, работающая на платформе 8.3 (например, релиз 8.3.10.2505). При выполнении стандартного кода по созданию внешней обработки в обычном приложении происходит сетевой разрыв.

Типичный программный код, инициирующий ошибку:


ДиалогФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогФайла.Фильтр = "Внешняя обработка(*.epf)|*.epf";
Если ДиалогФайла.Выбрать() Тогда 
    // Именно на этой строке происходит падение процесса rphost или разрыв связи
    ВнешняяОбработка = ВнешниеОбработки.Создать(ДиалогФайла.ПолноеИмяФайла);
КонецЕсли;

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

Анализ технологического журнала (ТЖ)

Проанализируем записи технологического журнала, которые возникают в момент падения. В логах мы видим критические исключения EXCP, связанные с сетевым обменом:


NetDataExchangeException, Descr=' server_addr=tcp://CRM:1741 descr=10054(0x00002746): 
Удаленный хост принудительно разорвал существующее подключение. line=1454 
file=src\DataExchangeTcpClientImpl.cpp'

Разберем, о чем говорят эти строки. Ошибка 10054 (WSAECONNRESET) означает, что транспортный уровень TCP получил пакет RST (reset). Это происходит, когда одна из сторон (в данном случае сервер 1С) внезапно закрывает сокет, не завершив сеанс обмена данными должным образом.

Обратим внимание на еще одну важную деталь в логах: Файл не обнаружен ... Files/SprScndInfo. Это свидетельствует о том, что сервер не может корректно обработать временные данные сессии или метаданные при передаче двоичных данных обработки от клиента на сервер. Когда платформа 8.3 пытается создать объект ВнешняяОбработка, она инициирует ряд проверок (включая безопасность и целостность метаданных), и если в этот момент рабочий процесс rphost завершается аварийно (крэшится), клиент получает сообщение о разрыве соединения.

Основное решение: Обновление платформы

Основной причиной ошибки в описанном случае является использование нестабильного релиза платформы. Ветка 8.3.10 (в частности, 8.3.10.2505) имела ряд задокументированных багов, связанных с механизмом "Защиты от опасных действий" и утечками памяти в рабочих процессах.

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

Рекомендуемый алгоритм действий:

  1. Выполним резервное копирование информационной базы.
  2. Произведем обновление платформы до актуального стабильного релиза (например, последних версий веток 8.3.22, 8.3.23 или выше, в зависимости от требований конфигурации).
  3. После обновления платформы обязательно обновим версию расширения конфигурации (если используется) и проверим работу механизма открытия файлов.

Как показывает практика, переход с "глючных" релизов 8.3.10 на более современные версии полностью устраняет ошибку 10054 без изменения программного кода.

Дополнительные меры по устранению сетевых разрывов

Если обновление платформы по каким-то причинам невозможно или не помогло, проанализируем инфраструктурные факторы, которые могут провоцировать разрыв TCP-сессии при передаче файла .epf.

1. Настройка сетевых карт (Offloading)

Современные сетевые адаптеры пытаются брать на себя часть функций процессора по обработке пакетов. Однако механизмы TCP Chimney Offload, RSS и Receive Segment Coalescing (RSC) часто конфликтуют с протоколом передачи данных 1С, особенно при передаче больших двоичных объектов. Выясним, включены ли эти функции, и попробуем их отключить в свойствах сетевого адаптера на стороне сервера.

2. Очистка серверного кэша и временных файлов

Проанализируем состояние папки srvinfo на сервере 1С. Иногда некорректные данные в каталоге сессий (snccntx) приводят к тому, что rphost не может сопоставить временный файл обработки с текущим контекстом пользователя. Рекомендуется:

3. Взаимодействие IPv4 и IPv6

В логах технологического журнала часто фигурируют адреса вида [::1]. Это указывает на использование протокола IPv6. Платформа 1С может пытаться установить соединение через IPv6, что при нестабильной настройке сетевого стека приводит к "отлупам" (reset) соединения. Рекомендуется принудительно прописать соответствие имени сервера и его IPv4-адреса в файле hosts на клиентских машинах и на самом сервере.

4. Роль антивирусного ПО

Посмотрим на работу антивирусов с функцией Deep Packet Inspection (DPI). При вызове метода Создать() файл обработки передается в теле TCP-пакета. Некоторые системы безопасности могут интерпретировать передачу программного кода внутри потока 1С как подозрительную активность и принудительно обрывать сессию. Проверим работу системы, временно отключив мониторинг сетевого трафика для процессов ragent.exe, rmngr.exe и rphost.exe.

Резюме

Ошибка 10054 при создании внешней обработки — это классический симптом аварийного завершения серверного процесса rphost. Рассмотрим краткий чек-лист для исправления:

  1. Обновление платформы: Самый эффективный метод, устраняющий внутренние ошибки ядра 1С.
  2. Анализ ТЖ: Проверка логов на предмет падения процессов (дампов).
  3. Проверка прав и кэша: Убедимся, что у пользователя USR1CV8 достаточно прав на папки временных файлов и кэш не поврежден.
  4. Сетевая оптимизация: Отключение функций разгрузки TCP на сетевых картах сервера.

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

← На главную