Разработка и сопровождение систем на базе 1С в клиент-серверном варианте часто сталкивает нас с ситуацией, когда конфигуратор запущен на локальном компьютере программиста, а сама информационная база и служба сервера 1С:Предприятие располагаются на удаленном физическом сервере. В таких условиях стандартное нажатие клавиши F5 может запустить клиентское приложение, но точки останова в процедурах с директивой &НаСервере работать не будут. Рассмотрим подробно, как решить эту задачу, настроив все компоненты системы для корректной работы отладчика.
Первое и самое важное условие: служба сервера 1С должна быть запущена со специальным ключом -debug. По умолчанию этот режим отключен в целях экономии ресурсов. Проанализируем, как активировать этот параметр в операционной системе Windows через реестр.
regedit).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent. Обратите внимание, что если на сервере установлено несколько версий платформы, нужно выбрать соответствующую ветку.ImagePath.-debug в конец строки.Пример того, как должна выглядеть строка запуска после редактирования:
"C:\Program Files\1cv8\8.3.x.xxxx\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
После внесения изменений обязательно перезагрузим службу сервера 1С через оснастку "Службы" (services.msc). Без перезапуска изменения в реестре не вступят в силу.
Одной из главных причин, по которой отладка не "цепляется", является блокировка трафика брандмауэром. При классической TCP-отладке сервер 1С должен иметь возможность инициировать обратное соединение с компьютером пользователя. Разберем, какие настройки требуются на обеих сторонах.
На стороне сервера: Необходимо разрешить входящие соединения для диапазона портов, указанных в параметре -range (по умолчанию это 1560-1591). Эти порты используются процессом rphost для обмена данными с отладчиком.
На стороне клиентского компьютера: Это критический момент, который часто упускают. Брандмауэр на компьютере программиста должен разрешать входящие подключения от сервера 1С. Выясним причину: в режиме TCP сервер сам "стучится" к клиенту. Мы рекомендуем добавить исполняемый файл 1cv8.exe в список исключений брандмауэра Windows или создать правило для входящих подключений по диапазону портов 1560-1591.
Теперь перейдем к настройкам самого Конфигуратора на локальном компьютере. Нам нужно указать системе, где именно искать предметы отладки. Рассмотрим порядок действий:
Если все настроено верно, в списке "Доступные предметы отладки" должны появиться сеансы, запущенные на сервере.
Начиная с версии платформы 8.3.7, появился более надежный механизм — отладка через HTTP. Выясним, почему этот способ предпочтительнее. В отличие от TCP, здесь используется централизованный сервер отладки (процесс dbgs), и нет необходимости открывать обратные порты на клиенте. Это идеальное решение для работы через NAT или VPN.
Для активации HTTP-отладки при запуске службы сервера 1С используется ключ -http. Настройка в конфигураторе также меняется:
http://имя_сервера:1550).В этом случае в брандмауэре сервера достаточно открыть один порт — 1550.
Часто программисты сталкиваются с тем, что отладка в обычных сеансах работает, а в фоновых заданиях — нет. Проанализируем ситуацию: фоновое задание запускается отдельным серверным процессом, который конфигуратор не всегда подхватывает автоматически.
Чтобы отладчик автоматически останавливался в коде фоновых заданий, выполним следующие шаги:
Важный совет: Если фоновое задание выполняется мгновенно, отладчик может не успеть инициализировать соединение. В таких случаях для целей отладки можно временно добавить в начало кода задания небольшую паузу, используя КомандаСистемы("timeout /t 5") или аналогичные методы, чтобы дать время сеансу отобразиться в списке предметов отладки.
Посмотрим на итоговый чек-лист для запуска отладки:
-debug (или -http) в реестре сервера добавлен, служба перезапущена.1560-1591 (для TCP) или 1550 (для HTTP) открыты в обе стороны.Помните, что включенный режим отладки на "боевом" сервере может незначительно снижать производительность. На высоконагруженных системах рекомендуется включать его только на время проведения диагностических работ или использовать отдельный тестовый контур.