Как настроить отладку фонового задания в 1С 8.3 в клиент-серверном варианте?

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

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

Шаг 1. Включение режима отладки на сервере 1С

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

Для включения этого режима необходимо добавить ключ -debug в параметры запуска службы сервера 1С. Проанализируем последовательность действий:

  1. Откроем редактор реестра (команда regedit).
  2. Перейдем в ветку: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (название может незначительно отличаться в зависимости от версии платформы).
  3. Найдем параметр ImagePath.
  4. В поле значения в самом конце строки (после всех кавычек и путей) добавим через пробел -debug.
  5. Перезапустим службу сервера 1С:Предприятие через консоль services.msc.

Важный нюанс: Если вы используете HTTP-отладку (доступна в более новых версиях платформы), ключ может выглядеть иначе, например, -debug -http. Однако для классического TCP-протокола достаточно простого -debug.

Шаг 2. Настройка конфигуратора для автоматического подключения

Рассмотрим ситуацию, когда сервер уже находится в режиме отладки, но фоновое задание "пролетает" мимо конфигуратора. Это происходит потому, что отладчик должен знать, какие именно типы соединений ему нужно перехватывать. Проверим настройки в самом конфигураторе.

Зайдем в меню Отладка — Подключение.... В открывшемся окне нажмем кнопку Автоматическое подключение.... Убедимся, что установлены флажки напротив следующих пунктов:

Теперь проанализируем настройки в меню Сервис — Параметры — Запуск 1С:Предприятия — Дополнительно. Здесь должны быть установлены галочки Устанавливать режим отладки и Использовать отладку при запуске. Обратите внимание на поле Адрес отладчика. В некоторых случаях автоматическое определение IP-адреса работает некорректно, особенно если на компьютере несколько сетевых интерфейсов или активен VPN. Попробуйте явно прописать IP-адрес вашего компьютера.

Шаг 3. Управление файлом конфигурации debugcfg.xml

Если стандартные методы не помогают, разберем более глубокий уровень настройки через файл debugcfg.xml. Этот файл позволяет принудительно указать серверу параметры отладки. Выясним, где он должен располагаться и что в нем писать.

Файл должен находиться в папке conf установленной платформы. Обратите внимание на разрядность сервера: для 64-битной версии путь обычно C:\Program Files\1cv8\conf, для 32-битной — C:\Program Files (x86)\1cv8\conf.

Пример содержания файла для принудительного включения отладки по протоколу TCP:


<config xmlns="http://v8.1c.ru/8.2/config/debugcfg">
    <debugportrange start="1560" end="1591" />
    <protocol inline="true">tcp</protocol>
</config>

После создания или изменения этого файла перезапуск сервера обязателен.

Шаг 4. Настройка сетевых экранов и портов

Проанализируем ситуацию с точки зрения системного администрирования. При TCP-отладке сервер 1С должен иметь возможность "постучаться" на компьютер разработчика. Это означает, что входящие соединения на порты отладки (обычно диапазон 1560–1591) должны быть разрешены в брандмауэре Windows (Firewall) на вашем локальном компьютере, а не только на сервере.

Если между вами и сервером стоит корпоративный фаервол, необходимо убедиться, что трафик по этим портам разрешен в обе стороны. Посмотрим на список стандартных портов: 1540 (менеджер кластера), 1541 (порт по умолчанию), 1560–1591 (диапазон портов отладки). Если вы видите в консоли администрирования порты типа 1562, значит система активно использует этот диапазон.

Шаг 5. Практический метод "Зацикливания" кода

Иногда фоновое задание выполняется настолько быстро, что отладчик просто не успевает инициализировать сессию. Выясним, как "поймать" такое задание вручную. Мы можем добавить в начало процедуры фонового задания специальный код, который заставит его подождать нас.

Рассмотрим пример кода:


Процедура МоеФоновоеЗадание()
    
    // Временный код для отладки
    ИмяФайлаФлага = "C:\temp\stop_debug.txt";
    Пока ФС.СуществуетФайл(ИмяФайлаФлага) Цикл
        // Сервер будет "висеть" здесь, пока файл существует
        // Это даст нам время подключиться вручную через Отладка - Подключение
    КонецЦикла;
    
    // Далее основной код задания
    ПроанализируемДанные();
    
КонецПроцедуры

Пока файл существует, задание будет находиться в цикле. Мы заходим в конфигуратор, открываем меню Отладка — Подключение, находим наше фоновое задание в списке Доступные предметы отладки, нажимаем Подключить. После этого удаляем файл stop_debug.txt, и выполнение кода переходит к вашим точкам останова.

Шаг 6. Особенности рабочих процессов (rphost)

Фоновые задания исполняются в процессах rphost.exe. Если на сервере настроено много рабочих процессов, отладка может вести себя нестабильно, так как конфигуратор "теряет" связь при переключении задания между процессами. Для целей отладки на тестовом сервере рекомендуется временно ограничить количество рабочих процессов до одного. Это гарантирует, что и конфигуратор, и фоновое задание будут взаимодействовать в рамках одного системного процесса rphost.

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

  1. Убедиться, что служба сервера запущена с ключом -debug.
  2. Проверить доступность портов в диапазоне 1560-1591 на локальной машине.
  3. Настроить автоматическое подключение предметов отладки "Фоновые задания" в конфигураторе.
  4. В случае проблем использовать метод "зацикливания" или файл debugcfg.xml.
← На главную