Разработка и Конфигурация · 9 мин
Как подключить отладку фонового задания в 1С
Как включить отладку фоновых заданий в 1С: настройка конфигуратора, флаг -debug, автоматическое подключение к сеансу, типичные ошибки и решения.
Фоновое задание в 1С выполняется в отдельном сеансе на сервере, поэтому обычная точка останова в конфигураторе его не перехватывает. Чтобы увидеть выполнение кода фонового задания, нужно включить отладку на сервере, разрешить автоматическое подключение отладчика к нужным типам сеансов и запустить задание заново. Ниже — полный порядок действий для файлового и клиент-серверного вариантов работы.
Основная сложность в том, что отладчик подключается к сеансу, а фоновое задание создаёт новый сеанс в момент запуска. Если в настройках конфигуратора не отмечен тип подключения «Фоновое задание», отладчик просто «не увидит» процесс, и точки останова сработают только в основном сеансе пользователя.
Что нужно проверить перед настройкой
Прежде чем менять настройки, убедитесь в трёх вещах. Во-первых, код, который вы хотите отладить, действительно выполняется в фоновом задании: проверьте вызов ФоновыеЗадания.Выполнить() или расписание регламентного задания. Во-вторых, у вас есть права на отладку — в свойствах пользователя информационной базы должен быть установлен признак «Отладка» (и «Отладка в протоколе HTTP(S)», если работа идёт через веб-сервер).
В-третьих, определите вариант работы базы. В файловом варианте отладка включается только на стороне клиента, в клиент-серверном — нужно перезапускать службу агента сервера 1С с ключом отладки. От этого зависит весь дальнейший порядок действий.
Включение отладки на сервере 1С
Для клиент-серверного варианта отладка включается ключом -debug при запуске агента сервера. На Windows откройте свойства службы «Агент сервера 1С:Предприятия» или ветку реестра с параметром ImagePath и добавьте в строку запуска -debug (для HTTP-отладки через веб-сервер дополнительно указывают -debug -http). После изменения строки запуска службу обязательно перезапустите.
На Linux ключ добавляется в скрипт или unit-файл запуска агента сервера, например в параметры srv1cv8. После правки выполните перезапуск демона. Учтите: режим отладки снижает производительность сервера, поэтому на продуктивных системах его включают только на время поиска проблемы.
В файловом варианте ничего перезапускать не нужно: достаточно запустить конфигуратор и включить режим отладки. Отладка фонового задания в файловой базе возможна, если задание запущено из того же клиентского приложения.
Настройка автоматического подключения в конфигураторе
Ключевой шаг, который чаще всего пропускают. Откройте конфигуратор, перейдите в меню Отладка → Подключение. В открывшемся окне нажмите кнопку «Автоматическое подключение». Появится список типов подключений: «Тонкий клиент», «Толстый клиент», «Веб-клиент», «Фоновое задание», «Внешнее соединение», «WS-соединение», «HTTP-сервис» и другие.
Установите флажок напротив «Фоновое задание» и подтвердите выбор. С этого момента при старте любого фонового задания отладчик автоматически подключится к его сеансу, и точки останова в коде процедуры начнут срабатывать.
- 1Включите отладку: для сервера — перезапустите агент с ключом -debug, для файловой базы — просто откройте конфигуратор
- 2В конфигураторе откройте «Отладка → Подключение → Автоматическое подключение»
- 3Отметьте тип подключения «Фоновое задание»
- 4Запустите отладку (F5) или убедитесь, что отладчик активен
- 5Поставьте точку останова в процедуре, которую выполняет фоновое задание
- 6Запустите фоновое задание и дождитесь остановки на точке
Запуск фонового задания и проверка остановки
Запустите задание тем же способом, каким оно запускается в работе: программно через ФоновыеЗадания.Выполнить("ИмяМетода", Параметры), через консоль заданий или дождавшись срабатывания расписания регламентного задания. Если расписание ждать долго, запустите регламентное задание принудительно — например, через обработку «Консоль заданий» с ИТС или собственную команду.
Признак успешного подключения: в конфигураторе в окне «Отладка → Подключение» появляется новый предмет отладки с типом «Фоновое задание», а выполнение останавливается на вашей точке. Дальше работа стандартная: шаги F10/F11, просмотр значений переменных, табло, стек вызовов.
Как проверить результат
Появился сеанс с типом «Фоновое задание»
Сеанс есть, но отладчик к нему не подключился
Выполнение останавливается, доступны переменные
Задание завершилось, остановки не было
Задание активно или завершено ожидаемо
Задание завершилось с ошибкой до точки останова
Отладка регламентных заданий
Регламентные задания — частный случай фоновых, и подключаются они так же. Важный нюанс: регламентное задание может выполняться под системным пользователем без интерактивного сеанса, но на подключение отладчика это не влияет — важен только тип сеанса «Фоновое задание» в настройках автоподключения.
Если регламентное задание отключено в расписании или заблокировано на уровне консоли кластера, оно просто не запустится, и отлаживать будет нечего. Проверьте, что задание активно и не заблокировано. В файловом варианте регламентные задания выполняются только если запущен клиентский сеанс, в котором вызван ВыполнитьОбработкуЗаданий() или включено выполнение заданий — без этого они не стартуют.
Типичные проблемы и их решение
Самая частая ситуация — точка останова не срабатывает. Причины по убыванию вероятности: не включено автоматическое подключение к фоновым заданиям; сервер запущен без ключа -debug; код выполняется в другом общем модуле, чем тот, где стоит точка; задание падает с ошибкой до достижения точки останова. Проверяйте по этому списку последовательно.
Вторая группа проблем — конфликт версий. Модуль, в котором стоит точка останова, должен быть серверным (флаг «Сервер» в свойствах общего модуля), иначе фоновое задание не сможет его вызвать вовсе. Также помните, что фоновое задание не имеет доступа к клиентскому контексту: вызовы Предупреждение(), работа с формами и клиентскими методами внутри задания приведут к ошибке ещё до отладки.
Альтернативы, когда отладка недоступна
Если подключить отладчик нельзя (нет доступа к серверу, нельзя перезапускать службу), используйте журнал регистрации и программное логирование. Добавьте в код задания вызовы ЗаписьЖурналаРегистрации() с ключевыми значениями переменных — после выполнения задания проанализируйте записи в журнале. Это менее удобно, чем пошаговая отладка, но безопасно для продуктивной среды.
Ещё один приём — вынести логику задания в отдельную процедуру и временно вызвать её синхронно из клиентского сеанса с теми же параметрами. Если ошибка воспроизводится независимо от фонового режима, вы отладите код обычным способом, без настройки подключения к фоновым заданиям.
Сравнение способов диагностики
Полный контроль: шаги, переменные, стек. Требует -debug на сервере и права на отладку
Работает везде, безопасен для продуктива, но видны только заранее залогированные значения
Быстро для локализации ошибки, но не воспроизводит специфику фонового сеанса
Частые вопросы
Почему отладчик не подключается к фоновому заданию, хотя отладка включена?
Чаще всего не отмечен тип «Фоновое задание» в окне «Отладка → Подключение → Автоматическое подключение». Также проверьте, что сервер запущен с ключом -debug и что у пользователя есть право на отладку.
Можно ли отладить фоновое задание в файловой базе?
Да, если задание запущено из вашего клиентского сеанса. Перезапуск службы не нужен — достаточно включить автоподключение к фоновым заданиям в конфигураторе и запустить отладку.
Как отладить регламентное задание, не дожидаясь расписания?
Запустите его принудительно через консоль заданий или программно: найдите задание через РегламентныеЗадания.НайтиПоУникальномуИдентификатору() и вызовите выполнение метода вручную в фоновом режиме.
Опасно ли включать отладку на рабочем сервере?
Режим -debug снижает производительность, а сработавшая точка останова приостанавливает выполнение кода, что может заблокировать процессы пользователей. Для продуктивных баз безопаснее использовать журнал регистрации или копию базы.
Точка останова стоит, но задание завершается с ошибкой до неё. Что делать?
Посмотрите текст ошибки в свойствах фонового задания (через консоль заданий или ФоновыеЗадания.НайтиПоУникальномуИдентификатору() и поле ИнформацияОбОшибке). Ошибка возникает раньше вашей точки — перенесите останов ближе к началу процедуры.
Нужно ли отключать автоподключение после отладки?
Желательно. Иначе отладчик будет подключаться к каждому фоновому заданию, включая системные, что замедлит работу и будет мешать при обычной отладке клиентского кода.
Что важно запомнить
Отладка фонового задания требует трёх условий: сервер запущен с -debug, в конфигураторе включено автоподключение к типу «Фоновое задание», точка останова стоит в серверном коде. После работы отключите режим отладки, чтобы не замедлять систему.