Как настроить отладку на сервере 1С, если точки останова срабатывают только на клиенте?

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

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

Разбираемся в архитектуре отладки

Для начала проанализируем, как устроена связь между отладчиком (вашим конфигуратором) и предметом отладки (сессией пользователя). В 1С существует два основных протокола передачи отладочной информации: TCP/IP и HTTP. Выбор протокола определяет, какие настройки сети нам потребуются. Рассмотрим ситуацию, когда сервер 1С находится в одной сети или доступен по VPN, а вы запускаете конфигуратор со своего рабочего места.

Основная причина, по которой сервер игнорирует точки останова, заключается в том, что служба 1C:Enterprise 8.3 Server Agent по умолчанию запускается без разрешения на отладку. Даже если вы включили отладку в настройках самого конфигуратора, сервер "не знает", что ему нужно передавать управление отладчику.

Способ 1: Настройка классической отладки по протоколу TCP

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

  1. Редактирование реестра на сервере: Нам необходимо зайти на сервер (один раз это придется сделать через RDP или попросить системного администратора). Откроем редактор реестра regedit. Нам нужна ветка: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (название может немного отличаться в зависимости от версии платформы).
  2. Изменение параметров запуска: Найдем параметр ImagePath. В нем указана строка запуска службы. В самый конец этой строки, после всех кавычек, добавим пробел и ключ -debug.

    Пример строки до изменения:

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

    Пример строки после изменения:

    "C:\Program Files\1cv8\8.3.22.1709\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
  3. Перезапуск службы: Чтобы изменения вступили в силу, необходимо перезапустить службу 1C:Enterprise 8.3 Server Agent. Учтите, что это прервет работу всех пользователей в этой базе.

Важный нюанс TCP-режима: При использовании этого протокола сервер сам пытается "достучаться" до вашего компьютера. Это означает, что на вашем локальном ПК в брандмауэре Windows должны быть открыты входящие порты для приложения 1cv8.exe. Если ваш компьютер находится за NAT или в другой подсети без прямой маршрутизации от сервера к вам, TCP-отладка на сервере работать не будет.

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

Проанализируем преимущества HTTP-отладки. В отличие от TCP, здесь используется централизованный сервер отладки (процесс dbgs). Все участники процесса (сервер 1С и конфигуратор) сами подключаются к нему. Это снимает проблему "обратного соединения" и необходимости открывать порты на компьютере разработчика.

Чтобы перевести сервер в режим HTTP-отладки, выполним следующие действия:

  1. В реестре сервера, там же, где мы добавляли -debug, заменим этот ключ на -http.
  2. После перезапуска службы на сервере 1С автоматически запустится процесс dbgs, который обычно слушает порт 1562.
  3. В конфигураторе на вашем рабочем столе перейдем в меню Сервис — Параметры — Отладка.
  4. Выберем переключатель "Протокол HTTP" и в поле "Адрес сервера отладки" укажем IP-адрес или сетевое имя вашего сервера 1С (например, http://192.168.1.10:1562).

Рассмотрим ситуацию, когда отладка все равно не работает. Проверьте файл conf.cfg в папке bin\conf на сервере. Иногда там может быть жестко прописан параметр debugServerAddr, который перекрывает настройки реестра.

Как отлаживать фоновые задания?

Часто программисты сталкиваются с тем, что обычный серверный код отлаживается, а регламентные задания — нет. Выясним причину: фоновые задания запускаются в отдельных сеансах, которые конфигуратор "не видит" по умолчанию. Посмотрим, как их подключить.

Разберем алгоритм действий в Конфигураторе:

  1. Перейдем в меню Отладка — Подключение...
  2. В открывшемся окне нажмем кнопку Настройка...
  3. В списке "Автоматическое подключение" установим флажок напротив пункта Фоновые задания.
  4. Нажмем "ОК". Теперь при старте любого фонового задания (например, при запуске обработки через ФоновыеЗадания.Выполнить) отладчик автоматически подцепит этот поток, и точка останова сработает.

Проанализируем ситуацию, если фоновое задание выполняется слишком быстро и вы не успеваете его "поймать". В таких случаях рекомендуется временно добавить в начало серверного кода небольшую паузу или использовать метод Сигнал(), чтобы успеть убедиться в подключении сеанса.

Проверка "Предметов отладки"

Чтобы окончательно убедиться, что сервер готов к работе, воспользуемся окном "Подключение". Если вы все настроили правильно, в списке "Доступные предметы отладки" вы должны увидеть строки, где в колонке "Тип" указано Сервер. Если там присутствует только Клиент, значит, флаг -debug или -http не активен, либо порт 1560-1591 (для TCP) или 1562 (для HTTP) заблокирован сетевым экраном на стороне сервера.

Выясним, как проверить доступность порта без специальных инструментов. Можно воспользоваться командой в терминале (PowerShell):

Test-NetConnection -ComputerName ИмяВашегоСервера -Port 1562

Если результат TcpTestSucceeded : True, значит, путь для отладочного трафика открыт. Если же вы видите ошибку, необходимо обратиться к системному администратору для настройки правил Firewall.

Таким образом, настройка отладки на сервере сводится к трем ключевым шагам: включение ключа запуска в реестре, выбор подходящего протокола (рекомендуем HTTP для удаленной работы) и настройка автоматического подключения фоновых заданий. Соблюдение этой последовательности позволит вам эффективно анализировать серверный код в любой конфигурации 1С.

← На главную