К статье
Практический материал

Разработка и Конфигурация · 9 мин

Как подключить отладку фонового задания в 1С

Как включить отладку фоновых заданий в 1С: настройка конфигуратора, флаг -debug, автоматическое подключение к сеансу, типичные ошибки и решения.

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

Основная сложность в том, что отладчик подключается к сеансу, а фоновое задание создаёт новый сеанс в момент запуска. Если в настройках конфигуратора не отмечен тип подключения «Фоновое задание», отладчик просто «не увидит» процесс, и точки останова сработают только в основном сеансе пользователя.

Что нужно проверить перед настройкой

Прежде чем менять настройки, убедитесь в трёх вещах. Во-первых, код, который вы хотите отладить, действительно выполняется в фоновом задании: проверьте вызов ФоновыеЗадания.Выполнить() или расписание регламентного задания. Во-вторых, у вас есть права на отладку — в свойствах пользователя информационной базы должен быть установлен признак «Отладка» (и «Отладка в протоколе HTTP(S)», если работа идёт через веб-сервер).

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

Включение отладки на сервере 1С

Для клиент-серверного варианта отладка включается ключом -debug при запуске агента сервера. На Windows откройте свойства службы «Агент сервера 1С:Предприятия» или ветку реестра с параметром ImagePath и добавьте в строку запуска -debug (для HTTP-отладки через веб-сервер дополнительно указывают -debug -http). После изменения строки запуска службу обязательно перезапустите.

На Linux ключ добавляется в скрипт или unit-файл запуска агента сервера, например в параметры srv1cv8. После правки выполните перезапуск демона. Учтите: режим отладки снижает производительность сервера, поэтому на продуктивных системах его включают только на время поиска проблемы.

В файловом варианте ничего перезапускать не нужно: достаточно запустить конфигуратор и включить режим отладки. Отладка фонового задания в файловой базе возможна, если задание запущено из того же клиентского приложения.

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

Ключевой шаг, который чаще всего пропускают. Откройте конфигуратор, перейдите в меню Отладка → Подключение. В открывшемся окне нажмите кнопку «Автоматическое подключение». Появится список типов подключений: «Тонкий клиент», «Толстый клиент», «Веб-клиент», «Фоновое задание», «Внешнее соединение», «WS-соединение», «HTTP-сервис» и другие.

Установите флажок напротив «Фоновое задание» и подтвердите выбор. С этого момента при старте любого фонового задания отладчик автоматически подключится к его сеансу, и точки останова в коде процедуры начнут срабатывать.

Порядок действий
  1. 1
    Включите отладку: для сервера — перезапустите агент с ключом -debug, для файловой базы — просто откройте конфигуратор
  2. 2
    В конфигураторе откройте «Отладка → Подключение → Автоматическое подключение»
  3. 3
    Отметьте тип подключения «Фоновое задание»
  4. 4
    Запустите отладку (F5) или убедитесь, что отладчик активен
  5. 5
    Поставьте точку останова в процедуре, которую выполняет фоновое задание
  6. 6
    Запустите фоновое задание и дождитесь остановки на точке

Запуск фонового задания и проверка остановки

Запустите задание тем же способом, каким оно запускается в работе: программно через ФоновыеЗадания.Выполнить("ИмяМетода", Параметры), через консоль заданий или дождавшись срабатывания расписания регламентного задания. Если расписание ждать долго, запустите регламентное задание принудительно — например, через обработку «Консоль заданий» с ИТС или собственную команду.

Признак успешного подключения: в конфигураторе в окне «Отладка → Подключение» появляется новый предмет отладки с типом «Фоновое задание», а выполнение останавливается на вашей точке. Дальше работа стандартная: шаги F10/F11, просмотр значений переменных, табло, стек вызовов.

Контрольные точки

Как проверить результат

Список подключённых предметов отладки
Норма

Появился сеанс с типом «Фоновое задание»

Тревожный признак

Сеанс есть, но отладчик к нему не подключился

Точка останова в коде задания
Норма

Выполнение останавливается, доступны переменные

Тревожный признак

Задание завершилось, остановки не было

Статус задания в консоли заданий
Норма

Задание активно или завершено ожидаемо

Тревожный признак

Задание завершилось с ошибкой до точки останова

Отладка регламентных заданий

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

Если регламентное задание отключено в расписании или заблокировано на уровне консоли кластера, оно просто не запустится, и отлаживать будет нечего. Проверьте, что задание активно и не заблокировано. В файловом варианте регламентные задания выполняются только если запущен клиентский сеанс, в котором вызван ВыполнитьОбработкуЗаданий() или включено выполнение заданий — без этого они не стартуют.

Типичные проблемы и их решение

Самая частая ситуация — точка останова не срабатывает. Причины по убыванию вероятности: не включено автоматическое подключение к фоновым заданиям; сервер запущен без ключа -debug; код выполняется в другом общем модуле, чем тот, где стоит точка; задание падает с ошибкой до достижения точки останова. Проверяйте по этому списку последовательно.

Вторая группа проблем — конфликт версий. Модуль, в котором стоит точка останова, должен быть серверным (флаг «Сервер» в свойствах общего модуля), иначе фоновое задание не сможет его вызвать вовсе. Также помните, что фоновое задание не имеет доступа к клиентскому контексту: вызовы Предупреждение(), работа с формами и клиентскими методами внутри задания приведут к ошибке ещё до отладки.

Типичные ошибки
01
Не включено автоподключение к типу «Фоновое задание» — отладчик молчит, хотя отладка запущена
02
Сервер не перезапущен после добавления ключа -debug — отладка серверного кода недоступна
03
Точка останова стоит в клиентском модуле — фоновое задание этот код не выполняет
04
Отладка на продуктивной базе — остановка кода блокирует работу пользователей
05
Ожидание расписания вместо принудительного запуска — время теряется впустую

Альтернативы, когда отладка недоступна

Если подключить отладчик нельзя (нет доступа к серверу, нельзя перезапускать службу), используйте журнал регистрации и программное логирование. Добавьте в код задания вызовы ЗаписьЖурналаРегистрации() с ключевыми значениями переменных — после выполнения задания проанализируйте записи в журнале. Это менее удобно, чем пошаговая отладка, но безопасно для продуктивной среды.

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

Сравнение способов диагностики

Отладчик с автоподключением

Полный контроль: шаги, переменные, стек. Требует -debug на сервере и права на отладку

Журнал регистрации

Работает везде, безопасен для продуктива, но видны только заранее залогированные значения

Синхронный вызов процедуры

Быстро для локализации ошибки, но не воспроизводит специфику фонового сеанса

Частые вопросы

Почему отладчик не подключается к фоновому заданию, хотя отладка включена?

Чаще всего не отмечен тип «Фоновое задание» в окне «Отладка → Подключение → Автоматическое подключение». Также проверьте, что сервер запущен с ключом -debug и что у пользователя есть право на отладку.

Можно ли отладить фоновое задание в файловой базе?

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

Как отладить регламентное задание, не дожидаясь расписания?

Запустите его принудительно через консоль заданий или программно: найдите задание через РегламентныеЗадания.НайтиПоУникальномуИдентификатору() и вызовите выполнение метода вручную в фоновом режиме.

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

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

Точка останова стоит, но задание завершается с ошибкой до неё. Что делать?

Посмотрите текст ошибки в свойствах фонового задания (через консоль заданий или ФоновыеЗадания.НайтиПоУникальномуИдентификатору() и поле ИнформацияОбОшибке). Ошибка возникает раньше вашей точки — перенесите останов ближе к началу процедуры.

Нужно ли отключать автоподключение после отладки?

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

Итог

Что важно запомнить

Отладка фонового задания требует трёх условий: сервер запущен с -debug, в конфигураторе включено автоподключение к типу «Фоновое задание», точка останова стоит в серверном коде. После работы отключите режим отладки, чтобы не замедлять систему.