Одной из наиболее частых и раздражающих проблем, с которыми сталкиваются разработчики при работе в клиент-серверном варианте «1С:Предприятие», является невозможность «зайти» в серверные процедуры и функции. Вы ставите точку останова, запускаете отладку, но программа просто пролетает мимо нужного участка кода. Давайте вместе разберемся, почему это происходит, проанализируем настройки службы сервера и выясним, как обеспечить стабильную связь между конфигуратором и серверным процессом.
Первым делом нам необходимо убедиться, что сервер «1С» вообще знает о том, что он должен работать в режиме отладки. За это отвечает специальный ключ -debug, который прописывается в строке запуска службы 1C:Enterprise 8.3 Server Agent. Рассмотрим, как это выглядит на практике.
Откроем редактор реестра и перейдем по пути: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3... (название ветки зависит от версии платформы). Нас интересует параметр ImagePath. Проанализируем правильное написание строки запуска:
"D:\Program Files\1cv8\8.3.13.1690\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
Важно обратить внимание на следующие нюансы. Во-первых, используйте именно дефис (-debug), а не косую черту (/debug), хотя в некоторых версиях работают оба варианта, дефис является стандартом для параметров службы. Во-вторых, крайне желательно ставить ключ -debug в самом конце строки или перед параметром -d. Если после внесения изменений в реестр вы не перезапустите службу сервера, настройки не вступят в силу.
Даже если сервер настроен правильно, Конфигуратор на стороне клиента может «не знать», к каким типам соединений ему нужно подключаться. Разберем шаги по настройке клиентского места:
Без этих галочек конфигуратор будет игнорировать сигналы от сервера, даже если тот успешно инициирует сеанс отладки.
Если на самом сервере (локально) отладка работает, а с клиентской машины — нет, значит, мы имеем дело с сетевой проблемой. Рассмотрим механизм работы классической TCP-отладки. Это так называемое «обратное соединение»: не только клиент подключается к серверу, но и сервер пытается инициировать соединение с клиентом.
Проанализируем ситуацию: когда вы активируете отладку, сервер 1С обращается к IP-адресу вашего компьютера по портам из диапазона 1560–1591. Если на вашем рабочем компьютере включен брандмауэр Windows (Windows Firewall) или антивирус, он заблокирует это входящее соединение.
Чтобы решить эту проблему, выполним следующие действия:
1560:1591.dbgs.exe запущен на сервере. Это отдельный процесс отладочного сервера, который появляется только при включенном ключе -debug.Если ваша сеть имеет сложную структуру (VPN, несколько подсетей, NAT), классическая TCP-отладка может работать нестабильно. В платформе 8.3 реализован более современный протокол — отладка по HTTP. Выясним, почему этот метод часто оказывается предпочтительнее: он не требует обратного соединения от сервера к клиенту, все общение идет через «посредника» — сервис отладки.
Рассмотрим пошагово, как переключиться на HTTP-отладку:
1. Изменим строку запуска службы сервера, добавив параметр -http вместо или вместе с -debug:
"C:\Program Files\1cv8\bin\ragent.exe" -srvc -agent ... -debug -http
2. В Конфигураторе перейдем в меню Сервис — Параметры — Отладка.
3. Выберем переключатель Протокол отладки: HTTP.
4. В поле Адрес сервера отладки укажем адрес нашего сервера 1С (например, http://192.168.1.10:1567). По умолчанию сервис отладки по HTTP использует порт 1567.
Иногда сервер 1С не может «найти» клиента, потому что клиент сообщает ему свой неверный IP-адрес (например, адрес виртуальной сети или 127.0.0.1). Посмотрим, как это исправить вручную.
В настройках Конфигуратора (Сервис — Параметры — Отладка — Дополнительно) найдите поле «Адрес своего компьютера». Вместо значения «Автоматически» впишите туда ваш реальный IP-адрес, который доступен серверу. Это принудительно заставит сервер обращаться именно по этому адресу при попытке начать сеанс отладки.
Проанализируем ситуацию, когда в конфигурации на обычных формах используются новые управляемые обработки. Здесь важно помнить, что для управляемых форм (даже в толстом клиенте) отладка может регулироваться не только ключом службы, но и настройками в Консоли администрирования серверов 1С. Откройте свойства вашей информационной базы в консоли и проверьте, установлена ли галочка «Отладка разрешена». Без этого флажка серверные вызовы в управляемом интерфейсе могут игнорироваться отладчиком.
Подводя итог, можно сказать: если отладка не работает, мы сначала проверяем наличие -debug в реестре и перезапуск службы, затем проверяем «галочки» автоподключения в Конфигураторе, и в 90% случаев оставшихся проблем виноват брандмауэр, блокирующий диапазон портов 1560-1591 на стороне разработчика.