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

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

Каждый разработчик 1С рано или поздно сталкивается с ситуацией, когда точки останова в клиентских процедурах срабатывают без проблем, но стоит коду уйти на сервер (в серверный модуль, фоновое задание или подписку на событие), как отладчик начинает их игнорировать. Системный администратор при этом уверяет, что перезапустил службу сервера с заветным ключом -debug, но отладка в Конфигураторе всё равно «не цепляет» серверный контекст. В этой статье мы подробно разберем, почему возникает эта проблема, как провести глубокую диагностику и правильно настроить окружение, не прибегая к небезопасному отключению сетевой защиты.

Выясняем причину: как проверить реальный запуск сервера 1С с ключом отладки

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

Рассмотрим по шагам, как проверить параметры запуска:

  1. Откроем Диспетчер задач (Task Manager) на сервере, где запущен кластер 1С.
  2. Перейдем на вкладку Подробности (Details).
  3. Найдем в списке процессов исполняемый файл ragent.exe. Если процессов несколько, обратим внимание на тот, который отвечает за нужную нам службу.
  4. Щелкнем правой кнопкой мыши по заголовку любой колонки таблицы процессов и выберем пункт Выбрать колонки (Select columns).
  5. Установим флажок напротив колонки Командная строка (Command Line) и нажмем «ОК».
  6. Проанализируем строку запуска процесса ragent.exe. В тексте команды обязательно должен присутствовать параметр -debug.

Если этого параметра в командной строке нет, то, как бы вас ни уверяли, служба запущена в обычном режиме. В таком случае необходимо открыть редактор реестра Windows на сервере, перейти в ветку:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\1C:Enterprise 8.3 Server Agent...

И в параметре ImagePath дописать ключ -debug в самый конец строки, после чего перезапустить службу из оснастки «Службы».

Настройка брандмауэра (Windows Firewall): безопасный доступ для отладчика

Очень часто разработчики решают проблему радикальным и небезопасным способом — полным отключением брандмауэра на сервере или локальном компьютере. В реальном корпоративном секторе это грубейшее нарушение политик безопасности. Выясним, как настроить сетевой экран правильно.

При использовании классического протокола TCP/IP Конфигуратор и рабочий процесс сервера 1С (rphost.exe) общаются друг с другом напрямую по динамическим портам. Для обеспечения стабильной связи выполним следующие настройки:

  1. На сервере 1С: Нам необходимо открыть диапазон портов отладки. По умолчанию в 1С используется пул портов 1560–1591 TCP. Также должны быть открыты порты службы агента (1540 TCP) и менеджера кластера (1541 TCP).
  2. Альтернативное правило для приложений: Вместо открытия конкретных портов можно создать правила для входящих подключений, разрешающие любую сетевую активность конкретным исполняемым файлам 1С: ragent.exe, rmngr.exe и rphost.exe. Это более гибкий подход, который защитит от сбоев при изменении сетевых настроек кластера.
  3. На локальном компьютере разработчика: Конфигуратор также должен быть доступен для входящих подключений от сервера. Убедимся, что в локальном брандмауэре Windows разрешена сетевая активность для файла 1cv8.exe (или 1cv8c.exe для тонкого клиента). При первом запуске отладки операционная система обычно выводит предупреждение с запросом на разрешение доступа — здесь крайне важно нажать «Разрешить доступ» для всех типов сетей (частных и публичных).

Переход на современную HTTP-отладку

Если классическая отладка по TCP/IP продолжает давать сбои из-за сложной сетевой топологии (например, когда разработчик работает через VPN, NAT или сложную систему маршрутизации), лучшим решением будет переход на протокол HTTP. Он гораздо стабильнее держит соединение и требует открытия всего одного фиксированного порта.

Разберем процесс настройки HTTP-отладки по шагам:

  1. Включение HTTP-отладки на сервере: Откроем редактор реестра на сервере 1С и найдем параметр ImagePath нашей службы сервера. Вместо ключа -debug пропишем связку параметров -debug -http. Это укажет серверу, что отладочную информацию нужно транслировать по протоколу HTTP.
  2. При таком запуске служба автоматически стартует локальный сервер отладки dbgs.exe. По умолчанию он резервирует фиксированный TCP-порт 1550.
  3. Настройка брандмауэра для HTTP: Теперь нам не нужно открывать большой диапазон портов 1560–1591. Достаточно создать одно простое правило, разрешающее входящие подключения по TCP-порту 1550 на сервере 1С.
  4. Настройка в Конфигураторе: Откроем Конфигуратор нашей базы данных, перейдем в меню Сервис — Параметры, выберем вкладку Отладка. Установим переключатель в положение «HTTP» и в поле «Адрес локального сервера отладки» укажем адрес нашего сервера, например: http://имя_сервера:1550.

Проблема нехватки портов и конфигурационный файл debugcfg.xml

Бывают ситуации, когда брандмауэр настроен корректно, ключ -debug прописан, но серверные точки останова упорно игнорируются. Проанализируем причину этого явления. Если на одном сервере крутится большое количество информационных баз или настроен агрессивный перезапуск рабочих процессов, новые процессы rphost.exe могут быстро исчерпать стандартный диапазон портов отладки (1560–1591). Конфигуратор при попытке подключения выдаст ошибку о невозможности зарегистрировать предмет отладки.

Для решения этой проблемы мы можем расширить диапазон портов вручную. Выполним следующие действия:

  1. На сервере 1С перейдем в каталог установки платформы, в папку конфигурации. Обычно это путь: C:\Program Files\1cv8\conf (или соответствующий каталог версии, например C:\Program Files\1cv8\8.3.22.XXX\bin\conf).
  2. Создадим в этой папке текстовый файл с именем debugcfg.xml.
  3. Вставим в него следующий XML-код, который расширяет диапазон доступных портов:

<config xmlns="http://v8.1c.ru/v8/debugcfg">
    <debugports range="1560:1690" />
</config>

После создания файла перезапустим службу сервера 1С. Теперь процессы будут иметь гораздо больше свободных портов для инициализации сессий отладки.

Очистка серверного кэша конфигураций

В процессе активной разработки конфигурация базы данных на сервере кэшируется. Иногда возникает рассинхронизация между версией кода в Конфигураторе разработчика и версией, исполняемой рабочим процессом сервера. Из-за этого отладчик «не видит» актуальные строки кода и пропускает точки останова. Обычная чистка локального кэша пользователя здесь не поможет — требуется сбросить серверный кэш.

Рассмотрим безопасную процедуру очистки кэша на сервере 1С:

  1. Остановим службу «Агент сервера 1С:Предприятие».
  2. Перейдем в каталог служебных файлов сервера. По умолчанию в Windows это папка C:\Program Files\1cv8\srvinfo.
  3. Зайдем в каталог центрального сервера кластера — обычно он называется reg_1541.
  4. Внутри этой папки мы увидим каталоги с длинными буквенно-цифровыми именами (UID баз данных). Зайдем в папку проблемной базы и найдем там кэш-директории (например, папки временных файлов конфигураций). Их можно безопасно удалить.
  5. Важное предупреждение: Ни в коем случае не удаляйте файл реестра кластера 1CV8Reg.lst и папки с логами регистрации 1Cv8Log. Это приведет к утере настроек списка баз данных и истории действий пользователей.
  6. После удаления временных папок запустим службу сервера заново. При первом обращении сервер заново сформирует чистый кэш конфигурации, и стабильность отладки восстановится.

Особенности отладки фоновых заданий

В современных конфигурациях 1С (особенно на базе БСП, таких как «1С:Документооборот», «1С:ERP» и др.) многие длительные серверные операции принудительно выполняются в фоновом режиме. Если вы пытаетесь поймать точку останова при проведении документа или формировании отчета, а она пролетает мимо — проверьте, не выполняется ли этот код в фоновом задании.

Для отладки фоновых заданий выполним простые шаги в Конфигураторе:

  1. Откроем меню Отладка — Подключение...
  2. В нижней части открывшегося окна нажмем кнопку Автоматическое подключение.
  3. В появившемся диалоговом окне установим флажок напротив пункта Фоновые задания и нажмем «ОК».
  4. Убедимся, что в списке доступных предметов отладки появились рабочие процессы фоновых заданий, и подключим их.

Теперь при запуске фонового процесса Конфигуратор автоматически перехватит управление, и выполнение кода остановится на вашей точке останова.

← На главную