Разберем ситуацию, когда стандартные методы включения отладки не помогают: флажки в автоматическом подключении расставлены, сервер запущен с ключом -debug, но конфигуратор упорно «не ловит» фоновое задание. Особенно часто это встречается при работе с расширениями в конфигурациях на управляемых формах, таких как УТ 11.4 или ERP. Проанализируем основные причины и найдем пошаговые решения для этой проблемы.
Первым делом нам необходимо убедиться, что сервер 1С действительно находится в режиме отладки. Часто программисты допускают ошибку в синтаксисе параметров строки запуска службы. Рассмотрим важный нюанс: в некоторых версиях платформы и операционных систем ключ -debug может игнорироваться, если он написан через дефис, в то время как использование слэша /debug решает проблему.
Проверим строку запуска в реестре или свойствах службы 1C:Enterprise 8.3 Server Agent. Правильный вариант должен выглядеть примерно так:
"C:\Program Files\1cv8\8.3.x.xxxx\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" /debug
Обратите внимание на использование /debug в конце строки. После внесения изменений обязательно перезапустите службу сервера 1С. Помните, что без этого ключа отладка на сервере (и, соответственно, в фоновых заданиях) будет невозможна в принципе.
Даже если служба запущена с нужным ключом, отладка может быть запрещена на уровне конкретной информационной базы. Выясним, как это проверить. Нам нужно зайти в Консоль администрирования кластера 1С, найти нашу базу в списке, открыть её свойства и убедиться, что установлен флажок «Отладка разрешена» (Debugging allowed).
Если этот флажок снят, сервер будет блокировать любые попытки конфигуратора подключиться к процессам этой базы. После установки флажка перезапуск сервера обычно не требуется, но сеанс конфигуратора лучше обновить.
Традиционный протокол TCP часто вызывает сложности из-за блокировок портов брандмауэром или трудностей с определением IP-адреса рабочего места разработчика. Рассмотрим современный способ — использование HTTP-отладки. В этом режиме сервер сам управляет подключениями, что делает отладку фоновых заданий гораздо стабильнее.
Для активации этого режима в строке запуска сервера вместо /debug используется параметр -http. В настройках конфигуратора (Сервис — Параметры — Отладка) также следует переключить протокол на HTTP и указать адрес сервера отладки.
Поскольку обмен с Битрикс24 часто реализован через расширения, проанализируем специфические причины отказа отладчика. Одной из самых распространенных является включенный «Безопасный режим» для расширения. В безопасном режиме возможности отладки сильно ограничены.
Попробуем выполнить следующие действия:
Также важно убедиться, что в окне «Подключение» (Отладка — Подключение) ваше расширение присутствует в списке доступных предметов отладки. Если его там нет, точки останова в модулях расширения срабатывать не будут.
Если настроить отладку фона не удается, применим «хитрость»: заставим код выполняться в текущем сеансе, а не в фоновом процессе. Рассмотрим, как это сделать. Большинство механизмов обмена используют метод ФоновыеЗадания.Выполнить(). Мы можем временно изменить код, чтобы вызвать процедуру напрямую.
Например, вместо такого кода:
ПараметрыЗадания = Новый Массив;
ПараметрыЗадания.Добавить(НастройкиОбмена);
ФоновыеЗадания.Выполнить("МойМодульОбмена.ВыполнитьВыгрузку", ПараметрыЗадания);
Используем прямой вызов:
// Для отладки закомментируем запуск фона и вызовем процедуру напрямую
МойМодульОбмена.ВыполнитьВыгрузку(НастройкиОбмена);
Теперь код будет выполняться в контексте вашего текущего сеанса (клиентского или серверного, в зависимости от модуля), и обычная точка останова сработает мгновенно.
Существует еще один системный способ — запуск программы с параметром РежимОтладки. Разберем, как это помогает. Если запустить клиентское приложение из конфигуратора с этим параметром, многие типовые механизмы (включая БСП, на которой построена УТ 11) автоматически переводят выполнение фоновых заданий в синхронный режим.
Для этого в конфигураторе перейдем в Сервис — Параметры — Запуск 1С:Предприятия — Основные и в поле «Параметры запуска» впишем:
/РежимОтладки
После этого запустим систему и инициируем обмен. Велика вероятность, что задание выполнится не в фоне, а в основном потоке, что позволит нам легко поймать точку останова.
Иногда автоматическое подключение подводит. В этом случае мы можем попробовать подключиться вручную. Для этого в коде перед участком, который нужно отладить, добавим искусственную паузу. Выясним, как это реализовать:
// Временная пауза на 20 секунд для ручного подключения
НачалоПаузы = ТекущаяДата();
Пока ТекущаяДата() < НачалоПаузы + 20 Цикл
// Ждем
КонецЦикла;
Пока задание «висит» в этом цикле, быстро переходим в конфигуратор: Отладка — Подключение. В списке доступных предметов ищем строку с типом «Фоновое задание», выбираем её и нажимаем «Подключить». После этого выполнение дойдет до вашей точки останова, и вы сможете продолжить анализ.
Используя предложенные методы в комплексе, мы сможем гарантированно отладить обмен с Битрикс24, независимо от того, насколько глубоко в фоновых процессах спрятан проблемный код.