В процессе разработки в среде 1С:Предприятие нередко возникает ситуация, когда точки останова в клиентских процедурах отрабатывают штатно, а в серверных вызовах (например, в обработчике ПриСозданииНаСервере) отладчик их полностью игнорирует. При этом у коллег в той же самой информационной базе серверная отладка может функционировать без каких-либо нареканий. Разберем архитектурные причины такого поведения, выясним, почему проблема чаще всего кроется в сетевых настройках локального компьютера разработчика, и рассмотрим пошаговые способы восстановления работоспособности отладки.
Для понимания корня проблемы проанализируем сетевую модель взаимодействия конфигуратора и сервера 1С при классическом протоколе отладки (по протоколу TCP). В отличие от стандартного клиент-серверного взаимодействия, где инициатором всегда выступает клиентская машина, механизм отладки требует двусторонней сетевой доступности:
rphost сам инициирует обратное входящее TCP-соединение на локальный компьютер разработчика на динамически выделенный порт.rphost не может установить обратную связь с конфигуратором, соединение отваливается по таймауту, и точка останова просто игнорируется.Именно поэтому очистка кэша, перезагрузка службы ragent или переустановка платформы не дают результата, если пакеты блокируются на стороне операционной системы разработчика.
Самая распространенная причина внезапного отказа серверной отладки — активация или обновление политик сетевой безопасности, применение доменных политик администраторами либо блокировка порта сторонним антивирусом. Выполним диагностику и настройку сетевого экрана:
1cv8.exe или портов диапазона отладки.C:\Program Files\1cv8\8.3.X.XXXX\bin\1cv8.exe) и выберем действие Разрешить подключение для всех профилей (Доменный, Частный, Публичный).1cv8.exe в список доверенных программ, которым разрешена сетевая активность на любых портах.Если брандмауэр настроен корректно, но сервер по-прежнему не может достучаться до клиентской машины, обратим внимание на конфигурацию сетевых интерфейсов ПК разработчика:
rphost пытается подключиться к несуществующему в физической сети адресу. Временно отключим неиспользуемые сетевые интерфейсы или настроим приоритет физической сетевой карты (метрику маршрута).127.0.0.1 или устаревший IP-адрес.Проверим внутренние параметры самой среды разработки. Перейдем в главное меню конфигуратора: пункт Отладка — Подключение. В открывшемся окне нажмем кнопку Настройка автоматического подключения. Убедимся, что установлены флаги для серверных контекстов (включая флаги для фоновых заданий, если отлаживается асинхронный код). Без этих флагов сервер не будет пытаться перехватывать выполнение для текущего сеанса отладки.
Если причину сетевой блокировки не удается устранить немедленно, а выполнить отладку алгоритма требуется срочно, воспользуемся обходным приемом. Для этого создадим внешнюю обработку, перенесем отлаживаемый код в модуль обработки или модуль формы и запустим сеанс 1С в режиме толстого клиента (обычное приложение). В этом режиме код процедур и функций выполняется локально на стороне клиента, что полностью исключает сетевое взаимодействие с серверными процессами для отладки и позволяет беспрепятственно анализировать выполнение логики через точки останова.
В современных версиях платформы 1С реализован протокол отладки по HTTP с использованием отдельного сервиса отладки (dbgs). При такой архитектуре конфигуратор и рабочие процессы rphost сами устанавливают исходящие TCP-соединения к сервису отладки по фиксированному порту. Это исключает необходимость входящих подключений на компьютер разработчика и позволяет вести серверную отладку даже через сложные маршрутизаторы, VPN-туннели и NAT без ручного проброса динамических портов.