Одной из самых неприятных проблем в работе с 1С:Предприятие является внезапный разрыв соединения с сервером. Особенно часто это происходит в конфигурации 1С:Управление торговлей 11.5 при работе через тонкий клиент. Пользователь пытается открыть документ (например, «Табель учета рабочего времени» или список заказов), система «задумывается» на несколько секунд, после чего выдает критическую ошибку: «Соединение с сервером потеряно». Рассмотрим подробно причины этого явления и пошагово разберем методы решения проблемы, основываясь на практике администраторов и разработчиков.
Первым делом проанализируем версию платформы 1С. В некоторых релизах (особенно веток 8.3.21, 8.3.22) наблюдались внутренние ошибки работы с сетевыми пакетами в тонком клиенте. Как показывает практика, обновление платформы на более свежий стабильный релиз часто исправляет проблему «само собой».
Однако простого обновления может быть недостаточно. Выясним причину, почему у одних пользователей база работает, а у других — вылетает. Часто виноват локальный кэш. Выполним следующие действия:
%AppData%\1C\1cv8 и %LocalAppData%\1C\1cv8 (дополнительно может потребоваться исправление рабочего места).Если проблема сохраняется только при удаленном подключении, а при запуске непосредственно на сервере (под тем же пользователем) все работает штатно — значит, корень проблемы кроется в настройках сети, параметрах кластера 1С или требуется привязка рабочего места к имени компьютера.
Разберем ситуацию, когда настройки кластера «слетают» или сбрасываются после обновления платформы. Это критически важный момент. Если параметры потребления памяти настроены неверно, рабочий процесс rphost может принудительно завершить сеанс пользователя при попытке выполнить «тяжелую» операцию (например, открытие списка документов с множеством отборов).
Проанализируем ключевые настройки в консоли администрирования кластера 1С, привлекая детализированный менеджер задач 1С:
rphost (например, до 20-30), чтобы падение одного процесса не затрагивало сразу всех пользователей.Посмотрим на программную сторону вопроса. В конфигурации 1С:УТ 11.5 многие списки документов являются динамическими. Если в коде формы списка (в процедуре ПриСозданииНаСервере) устанавливаются сложные программные отборы, это может перегрузить SQL-сервер.
Рассмотрим пример установки отбора, который может вызывать проблемы, если динамический список построен на произвольном запросе с левыми соединениями:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Установка отбора по организации и подразделению
ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Организация");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Параметры.ТекущаяОрганизация;
ЭлементОтбора.Использование = Истина;
КонецПроцедуры
Если динамический список не имеет указанной Основной таблицы, 1С не сможет оптимизировать запрос. Проанализируем запрос в свойстве «Произвольный запрос» списка. Если там используются соединения с регистрами или сложными вложенными таблицами, при наложении отбора SQL-сервер может построить неэффективный план выполнения. В результате время ожидания ответа (timeout) превысит допустимое, и тонкий клиент закроет соединение.
Выясним, как влияют сетевые настройки на стабильность сессии. Иногда проблема кроется в некорректной работе DNS-сервера провайдера. Проверим это, прописав публичные DNS (например, 8.8.8.8) в настройках сетевого адаптера на проблемных рабочих станциях. Это часто решает проблему мгновенного разрыва при установке соединения.
Также разберем настройки сетевых карт на сервере. Технологии разгрузки сетевого протокола могут конфликтовать с интенсивным трафиком 1С. Рекомендуется отключить функции TCP Chimney Offload и RSS. Для этого выполним в командной строке от имени администратора:
netsh int tcp set global chimney=disabled
netsh int tcp set global rss=disabled
netsh int tcp set global autotuninglevel=disabled
Дополнительно в диспетчере устройств для сетевого адаптера на вкладке «Управление электропитанием» снимем галочку «Разрешить отключение этого устройства для экономии энергии». Это предотвратит микро-паузы в работе порта, которые 1С интерпретирует как потерю связи.
Если соединение рвется при кратковременном бездействии пользователя или при длительном ожидании формирования отчета, проанализируем параметры времени жизни TCP-соединения. По умолчанию в Windows это время может быть слишком большим, и промежуточное оборудование (роутеры, фаерволы) успевает закрыть «неактивную» сессию.
Установим более агрессивный интервал проверки связи KeepAliveTime в реестре (значение в миллисекундах, например, 3 минуты — 180000):
regedit.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters.KeepAliveTime и значением 180000.Это заставит сервер чаще отправлять пакеты для подтверждения активности сессии, не давая сетевому оборудованию разорвать канал связи.
Напоследок проверим работу систем безопасности. При открытии документа 1С передает значительный объем данных (метаданные формы, данные списка). Антивирус может расценить это как сетевую атаку или подозрительную активность. Добавим процессы ragent.exe, rmngr.exe, rphost.exe на сервере и 1cv8c.exe на клиентах в доверенные зоны и исключения сетевого экрана.
Соблюдение этого комплексного подхода позволит локализовать и устранить причину потери соединения, обеспечив стабильную работу пользователей в 1С:УТ 11.5.