Почему не работает отладка на сервере 1С и как это исправить?

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

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

Архитектура классической отладки по протоколу TCP

Для понимания корня проблемы проанализируем сетевую модель взаимодействия конфигуратора и сервера 1С при классическом протоколе отладки (по протоколу TCP). В отличие от стандартного клиент-серверного взаимодействия, где инициатором всегда выступает клиентская машина, механизм отладки требует двусторонней сетевой доступности:

  1. Конфигуратор регистрируется на сервере отладки и сообщает параметры подключения своего рабочего места.
  2. Когда исполняемый код доходит до точки останова на стороне сервера, рабочий процесс rphost сам инициирует обратное входящее TCP-соединение на локальный компьютер разработчика на динамически выделенный порт.
  3. Если между сервером и клиентским ПК существует препятствие (сетевой экран, маршрутизация с NAT или правила фильтрации пакетов), серверный процесс rphost не может установить обратную связь с конфигуратором, соединение отваливается по таймауту, и точка останова просто игнорируется.

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

Шаг 1. Проверка и настройка брандмауэра Windows и антивирусного ПО

Самая распространенная причина внезапного отказа серверной отладки — активация или обновление политик сетевой безопасности, применение доменных политик администраторами либо блокировка порта сторонним антивирусом. Выполним диагностику и настройку сетевого экрана:

  1. Откроем Монитор брандмауэра Защитника Windows в режиме повышенной безопасности.
  2. Перейдем в раздел Правила для входящих подключений и проанализируем список на наличие блокирующих правил для исполняемых файлов платформы 1cv8.exe или портов диапазона отладки.
  3. Если обнаружены запрещающие правила, удалим их или отключим.
  4. Создадим разрешающее правило для входящего трафика: укажем тип правила «Для программы», выберем путь к исполняемому файлу используемой версии платформы (например, C:\Program Files\1cv8\8.3.X.XXXX\bin\1cv8.exe) и выберем действие Разрешить подключение для всех профилей (Доменный, Частный, Публичный).
  5. Если в операционной системе установлен сторонний антивирусный комплекс со встроенным сетевым экраном (файрволом) или компонентом HIPS, обязательно добавим каталог платформы или сам процесс 1cv8.exe в список доверенных программ, которым разрешена сетевая активность на любых портах.

Шаг 2. Проверка сетевых адаптеров и маршрутизации

Если брандмауэр настроен корректно, но сервер по-прежнему не может достучаться до клиентской машины, обратим внимание на конфигурацию сетевых интерфейсов ПК разработчика:

  1. Несколько сетевых подключений: Наличие виртуальных адаптеров (VirtualBox, Hyper-V, Docker, VPN-клиенты) часто приводит к тому, что конфигуратор передает серверу адрес неосновного или изолированного виртуального интерфейса. В результате rphost пытается подключиться к несуществующему в физической сети адресу. Временно отключим неиспользуемые сетевые интерфейсы или настроим приоритет физической сетевой карты (метрику маршрута).
  2. Разрешение сетевых имен (DNS / hosts): Сервер 1С может пытаться связаться с компьютером разработчика по имени хоста. Убедимся, что на сервере имя рабочей станции корректно транслируется в актуальный IP-адрес локальной сети, а не резолвится как 127.0.0.1 или устаревший IP-адрес.

Шаг 3. Настройки автоматического подключения контекстов в конфигураторе

Проверим внутренние параметры самой среды разработки. Перейдем в главное меню конфигуратора: пункт Отладка — Подключение. В открывшемся окне нажмем кнопку Настройка автоматического подключения. Убедимся, что установлены флаги для серверных контекстов (включая флаги для фоновых заданий, если отлаживается асинхронный код). Без этих флагов сервер не будет пытаться перехватывать выполнение для текущего сеанса отладки.

Временное решение: отладка через внешнюю обработку в толстом клиенте

Если причину сетевой блокировки не удается устранить немедленно, а выполнить отладку алгоритма требуется срочно, воспользуемся обходным приемом. Для этого создадим внешнюю обработку, перенесем отлаживаемый код в модуль обработки или модуль формы и запустим сеанс 1С в режиме толстого клиента (обычное приложение). В этом режиме код процедур и функций выполняется локально на стороне клиента, что полностью исключает сетевое взаимодействие с серверными процессами для отладки и позволяет беспрепятственно анализировать выполнение логики через точки останова.

Особенности протокола HTTP (платформы 8.3.7 и выше)

В современных версиях платформы 1С реализован протокол отладки по HTTP с использованием отдельного сервиса отладки (dbgs). При такой архитектуре конфигуратор и рабочие процессы rphost сами устанавливают исходящие TCP-соединения к сервису отладки по фиксированному порту. Это исключает необходимость входящих подключений на компьютер разработчика и позволяет вести серверную отладку даже через сложные маршрутизаторы, VPN-туннели и NAT без ручного проброса динамических портов.

← На главную