При работе в клиент-серверном варианте платформы 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, внутренние процедуры платформы при создании внешних объектов могут работать некорректно.
Рекомендуемый алгоритм действий:
Как показывает практика, переход с "глючных" релизов 8.3.10 на более современные версии полностью устраняет ошибку 10054 без изменения программного кода.
Если обновление платформы по каким-то причинам невозможно или не помогло, проанализируем инфраструктурные факторы, которые могут провоцировать разрыв TCP-сессии при передаче файла .epf.
1. Настройка сетевых карт (Offloading)
Современные сетевые адаптеры пытаются брать на себя часть функций процессора по обработке пакетов. Однако механизмы TCP Chimney Offload, RSS и Receive Segment Coalescing (RSC) часто конфликтуют с протоколом передачи данных 1С, особенно при передаче больших двоичных объектов. Выясним, включены ли эти функции, и попробуем их отключить в свойствах сетевого адаптера на стороне сервера.
2. Очистка серверного кэша и временных файлов
Проанализируем состояние папки srvinfo на сервере 1С. Иногда некорректные данные в каталоге сессий (snccntx) приводят к тому, что rphost не может сопоставить временный файл обработки с текущим контекстом пользователя. Рекомендуется:
reg_1541 (за исключением файла 1CV8Reg.lst).Temp пользователя, от имени которого запускается служба 1С (обычно USR1CV8).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. Рассмотрим краткий чек-лист для исправления:
USR1CV8 достаточно прав на папки временных файлов и кэш не поврежден.Соблюдение этих рекомендаций позволит обеспечить стабильную работу пользователей с внешними обработками в тяжелых клиент-серверных информационных системах.