Как отладить фоновое задание при обмене с Битрикс24 в 1С?

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

Разберем ситуацию, когда стандартные методы включения отладки не помогают: флажки в автоматическом подключении расставлены, сервер запущен с ключом -debug, но конфигуратор упорно «не ловит» фоновое задание. Особенно часто это встречается при работе с расширениями в конфигурациях на управляемых формах, таких как УТ 11.4 или ERP. Проанализируем основные причины и найдем пошаговые решения для этой проблемы.

1. Проверка параметров запуска службы сервера 1С

Первым делом нам необходимо убедиться, что сервер 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С. Помните, что без этого ключа отладка на сервере (и, соответственно, в фоновых заданиях) будет невозможна в принципе.

2. Настройка разрешения отладки в консоли кластера

Даже если служба запущена с нужным ключом, отладка может быть запрещена на уровне конкретной информационной базы. Выясним, как это проверить. Нам нужно зайти в Консоль администрирования кластера 1С, найти нашу базу в списке, открыть её свойства и убедиться, что установлен флажок «Отладка разрешена» (Debugging allowed).

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

3. Переход на протокол HTTP для отладки

Традиционный протокол TCP часто вызывает сложности из-за блокировок портов брандмауэром или трудностей с определением IP-адреса рабочего места разработчика. Рассмотрим современный способ — использование HTTP-отладки. В этом режиме сервер сам управляет подключениями, что делает отладку фоновых заданий гораздо стабильнее.

Для активации этого режима в строке запуска сервера вместо /debug используется параметр -http. В настройках конфигуратора (Сервис — Параметры — Отладка) также следует переключить протокол на HTTP и указать адрес сервера отладки.

4. Особенности отладки в расширениях конфигурации

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

Попробуем выполнить следующие действия:

  1. Зайдем в список расширений в режиме «1С:Предприятие».
  2. Найдем расширение обмена с Битрикс24.
  3. Снимем флажок «Безопасный режим».
  4. Снимем флажок «Защита от опасных действий».
  5. Перезапустим сеанс.

Также важно убедиться, что в окне «Подключение» (Отладка — Подключение) ваше расширение присутствует в списке доступных предметов отладки. Если его там нет, точки останова в модулях расширения срабатывать не будут.

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

Если настроить отладку фона не удается, применим «хитрость»: заставим код выполняться в текущем сеансе, а не в фоновом процессе. Рассмотрим, как это сделать. Большинство механизмов обмена используют метод ФоновыеЗадания.Выполнить(). Мы можем временно изменить код, чтобы вызвать процедуру напрямую.

Например, вместо такого кода:


ПараметрыЗадания = Новый Массив;
ПараметрыЗадания.Добавить(НастройкиОбмена);
ФоновыеЗадания.Выполнить("МойМодульОбмена.ВыполнитьВыгрузку", ПараметрыЗадания);

Используем прямой вызов:


// Для отладки закомментируем запуск фона и вызовем процедуру напрямую
МойМодульОбмена.ВыполнитьВыгрузку(НастройкиОбмена);

Теперь код будет выполняться в контексте вашего текущего сеанса (клиентского или серверного, в зависимости от модуля), и обычная точка останова сработает мгновенно.

6. Использование режима отладки в параметрах запуска

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

Для этого в конфигураторе перейдем в Сервис — Параметры — Запуск 1С:Предприятия — Основные и в поле «Параметры запуска» впишем:

/РежимОтладки

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

7. Ручное подключение к предмету отладки

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


// Временная пауза на 20 секунд для ручного подключения
НачалоПаузы = ТекущаяДата();
Пока ТекущаяДата() < НачалоПаузы + 20 Цикл
    // Ждем
КонецЦикла;

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

Используя предложенные методы в комплексе, мы сможем гарантированно отладить обмен с Битрикс24, независимо от того, насколько глубоко в фоновых процессах спрятан проблемный код.

← На главную