Разработка на 1С часто сталкивается с ситуацией, когда код, написанный в модуле формы или объекте, не «цепляется» отладчиком, если он выполняется на стороне сервера. Мы часто видим, что точки останова игнорируются, даже если в настройках конфигуратора все параметры установлены корректно. Давайте разберемся, в чем заключается корень проблемы и как заставить отладку работать в серверных процедурах.
Самая распространенная ошибка, с которой сталкиваются разработчики — это отсутствие параметра /debug при запуске службы Агент сервера 1С:Предприятие. Даже если вы включили все галочки в конфигураторе, сервер 1С не будет принимать подключения отладчика, пока служба не переведена в режим отладки.
Чтобы исправить это, нам необходимо выполнить следующие шаги:
services.msc).1C:Enterprise 8.3 Server Agent).ragent.exe./debug в настройках службы.Обратите внимание: если вы используете установку через реестр или командную строку, вам нужно убедиться, что параметр /debug добавлен в строку запуска. В современных версиях платформы это часто делается через правку параметров службы в реестре или с помощью командной строки:
sc stop "1C:Enterprise 8.3 Server Agent"
sc config "1C:Enterprise 8.3 Server Agent" binPath= "\"C:\Program Files\1cv8\bin\ragent.exe\" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -debug -d \"C:\Program Files\1cv8\srvinfo\""
sc start "1C:Enterprise 8.3 Server Agent"
После перезапуска службы сервер начнет принимать отладочные соединения.
После того как сервер переведен в режим отладки, нам нужно убедиться, что сам конфигуратор настроен верно:
Перейдите в меню Отладка -> Подключение. В открывшемся окне проверьте параметры автоматического подключения. В списке предметов отладки обязательно должны быть отмечены пункты Сервер и, если вы отлаживаете фоновые вычисления, Фоновые задания. Без включения этих предметов конфигуратор просто не отправит запрос на сервер для перехвата выполнения кода.
Если после включения режима отладки точки останова все равно не срабатывают, проанализируем сетевую доступность. Сервер 1С взаимодействует с отладчиком через порты из диапазона 1560-1591. Если на сервере включен брандмауэр Windows или сторонний сетевой экран, эти порты могут быть закрыты.
Попробуйте временно отключить брандмауэр для проверки. Если отладка заработала, значит, необходимо добавить соответствующие порты в исключения правил входящих и исходящих соединений. Также убедитесь, что между компьютером разработчика и сервером нет ограничений сетевого оборудования.
Важным нюансом является совпадение версий платформы. Если на клиентском компьютере установлена версия 8.3.22.x, а на сервере 8.3.23.x, механизм отладки может работать некорректно или не работать вовсе. Мы настоятельно рекомендуем поддерживать идентичность версий платформы на всех узлах системы.
Также, если вы недавно обновляли конфигурацию или меняли серверные модули, отладчик может «застрять» на старой версии метаданных из кэша. Попробуйте очистить кэш 1С на клиентской машине и, если проблема сохраняется, кэш метаданных на сервере в каталоге srvinfo.
Чтобы быстро проверить работоспособность, не обязательно запускать сложные процедуры. Вы можете поставить точку останова в простом обработчике, который точно выполняется на сервере:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Поставьте здесь точку останова
Сообщить("Проверка отладки");
КонецПроцедуры
Если при открытии формы выполнение останавливается — поздравляем, вы успешно настроили среду разработки. Если же нет — еще раз проверьте, запущен ли агент сервера именно с ключом /debug, так как именно этот шаг в 90% случаев является решением проблемы.