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

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

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

Способ 1: Настройка ключа запуска службы агента сервера

Самая первая и очевидная причина — сервер 1С запущен в обычном режиме, а не в режиме отладки. Для включения отладки необходимо добавить специальный параметр в строку запуска службы 1C:Enterprise 8.3 Server Agent. Рассмотрим, как это сделать правильно. Стоит отметить, что при подготовке серверного окружения часто требуется установка комьюнити-лицензии на сервер 1С, что также актуально для полноценной настройки среды разработки.

Для настройки нам потребуется редактор реестра Windows. Разберем последовательность действий:

  1. Нажмем Win + R, введем regedit и перейдем по пути: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent.
  2. Найдем параметр ImagePath. В нем содержится строка запуска исполняемого файла ragent.exe.
  3. Проанализируем текущую строку. Нам необходимо добавить флаг -debug.

Важный нюанс: в зависимости от версии платформы и операционной системы, синтаксис ключа может отличаться. Рассмотрим примеры правильного написания:

Пример правильно настроенной строки в реестре:


"C:\Program Files\1cv8\8.3.22.1923\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug

После изменения реестра обязательно перезагрузим службу агента сервера через оснастку services.msc. Убедимся, что после перезапуска в диспетчере задач у процесса ragent.exe в аргументах командной строки появился заветный ключ.

Способ 2: Настройка сетевых портов и брандмауэра

Если служба запущена с ключом отладки, но точки останова все равно не срабатывают, выясним причину в сетевых блокировках. Отладка в 1С (по протоколу TCP) работает следующим образом: сервер должен иметь возможность «достучаться» до клиента по определенному диапазону портов.

Проанализируем работу портов. По умолчанию для отладки используется диапазон 1560–1591. Если между сервером и компьютером разработчика стоит брандмауэр (Windows Firewall) или антивирус, они могут блокировать входящие соединения.

Выполним настройку брандмауэра на стороне клиента (компьютера разработчика) и на стороне сервера:

  1. Откроем «Брандмауэр Windows в режиме повышенной безопасности».
  2. Создадим «Правило для входящих подключений».
  3. Выберем тип правила «Для порта», укажем протокол TCP и диапазон 1560-1591.
  4. Разрешим подключение для всех профилей сети.

Посмотрим на ситуацию, когда разработчик работает через терминальный сервер. В этом случае правила должны быть настроены на самом терминальном сервере, так как именно там запущен процесс 1cv8.exe (Конфигуратор).

Способ 3: Идентичность имен сервера и базы (Регистрозависимость)

Малоизвестный, но критически важный фактор — полное совпадение имен сервера и информационной базы в настройках подключения. Выясним, почему это важно. Отладчик сопоставляет предметы отладки по строке соединения. Если в Конфигураторе сервер прописан как SERVER-1C, а в списке баз Предприятия как server-1c, отладка может не связаться.

Проверим это по шагам:

  1. В Конфигураторе зайдем в меню Справка — О программе. Посмотрим раздел «Информационная база», там указана строка соединения.
  2. Запустим сеанс Предприятия и также откроем О программе.
  3. Сравним строки. Если есть различия в регистре букв или вместо имени используется IP-адрес — приведем всё к единому виду (лучше всего использовать верхний регистр).

Способ 4: Настройка предметов отладки в Конфигураторе

Иногда серверный предмет отладки просто не подключен автоматически. Проверим это в настройках Конфигуратора:

  1. Перейдем в меню Отладка — Подключение....
  2. В верхней таблице «Доступные предметы отладки» должен присутствовать тип Сервер.
  3. Если он там есть, но не в нижней таблице, нажмем кнопку Подключить.
  4. Чтобы не делать это каждый раз, нажмем кнопку Настройка... и установим флажки «Автоматическое подключение: Фоновые задания» и «Серверные вызовы».

Рассмотрим ситуацию, когда в списке доступных предметов вообще нет типа Сервер. Это однозначно сигнализирует о том, что либо ключ -debug не подхватился службой, либо сетевой экран блокирует видимость сервера.

Способ 5: Переход на HTTP-отладку (для современных платформ)

Начиная с версии 8.3.7, платформа поддерживает более надежный протокол отладки — HTTP. Разберем его преимущества. В отличие от TCP, где сервер инициирует соединение к клиенту, в HTTP-режиме используется посредник — сервис отладки (dbgs). Это решает проблемы с NAT и сложными сетевыми маршрутами.

Для включения HTTP-отладки выполним следующие действия:

  1. В строке запуска службы агента вместо -debug пропишем -http.
  2. В параметрах Конфигуратора (Сервис — Параметры — Отладка) переключим протокол на «HTTP».
  3. Укажем адрес сервера отладки (обычно http://имя_сервера:1550).

Способ 6: Отладка фоновых заданий и внешних соединений

Если вам необходимо отладить код, запускаемый в фоновом задании или через COM-соединение, обычных настроек может быть недостаточно. Проанализируем дополнительные инструменты. Например, для понимания принципов работы асинхронного кода полезно изучить реализацию фоновых заданий без использования БСП.

Для отладки внешних соединений (COM) необходимо создать файл comcntfcfg.xml в каталоге conf (например, C:\Program Files\1cv8\conf). Содержимое файла должно быть следующим:


<config xmlns="http://v8.1c.ru/7.4/config">
  <debuginfo debug="true" />
</config>

Это заставит внешние соединения «сообщать» отладчику о своем существовании. Если же вы работаете с внешними объектами, то значительно упростить процесс помогут расширение для отладки внешних обработок или специализированная экспресс-отладка дополнительных отчетов. Также не забудем включить автоматическое подключение к фоновым заданиям в окне «Подключение» конфигуратора, иначе отладчик проигнорирует их запуск.

Резюме и проверка результата

После выполнения всех настроек проведем итоговую проверку. Напишем простейший код в любом серверном модуле:


&НаСервере
Процедура ПроверкаОтладкиНаСервере()
    Сообщить("Проверка связи с отладчиком"); // Поставим здесь точку останова
КонецПроцедуры

Если при вызове этой процедуры выполнение остановилось и строка подсветилась синим цветом — поздравляем, вы успешно настроили серверную отладку! Чтобы в дальнейшем ускорить цикл разработки и не тратить время на постоянные переоткрытия объектов, рекомендуем использовать менеджер внешних обработок. Если же отладка не заработала, следует еще раз убедиться, что имена базы и сервера в Конфигураторе и в списке баз при запуске написаны идентично (вплоть до регистра), так как это самая коварная и труднозаметная причина отказа.

← На главную