Как настроить отладку внешней обработки в серверной базе 1С:Предприятие?

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

Работа с внешними обработками в клиент-серверном варианте 1С (особенно в таких конфигурациях, как БГУ 2.0) часто сопровождается трудностями при попытке отладить серверный код. Программисты сталкиваются с ситуацией, когда точка останова, установленная в модуле объекта, попросту игнорируется системой, хотя на локальной (файловой) базе всё работает корректно. Рассмотрим подробно, почему это происходит и как настроить рабочее окружение для полноценной отладки.

Анализ связи Конфигуратора и сеанса Предприятия

Первым делом проанализируем состояние самого процесса отладки. Бывают ситуации, когда сеанс «1С:Предприятие» запущен, но он не связан с текущим сеансом Конфигуратора. Выясним, как это проверить. Если вы нажимаете кнопку «Начать отладку» (F5), а значок отладки в конфигураторе не становится активным (или кнопка запуска остается доступной для повторного нажатия), значит, автоматического подключения не произошло.

Выполним следующие шаги для принудительного подключения:

  1. В Конфигураторе перейдем в меню Отладка — Подключение....
  2. В открывшемся окне «Доступные предметы отладки» найдем свой запущенный сеанс клиента.
  3. Нажмем кнопку Подключить.

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

Проверка флага отладки на стороне сервера (-debug)

Это наиболее распространенная причина проблем. По умолчанию сервер 1С:Предприятия запускается в режиме оптимизации производительности, где отладка выключена, так как она потребляет дополнительные ресурсы сервера. Проверим, включен ли режим -debug. Если у вас нет прямого доступа к консоли сервера или службам Windows, проанализируем косвенные признаки.

Попробуем создать простейший тест. В модуле обработки напишем переход с клиента на сервер и попробуем зайти внутрь серверной процедуры с помощью клавиши F11:


&НаКлиенте
Процедура ТестОтладки(Команда)
    ТестовыйВызовНаСервере(); // Ставим точку здесь и жмем F11
КонецПроцедуры

&НаСервере
Процедура ТестовыйВызовНаСервере()
    А = 1 + 1; // Если сюда не зашло — отладка на сервере выключена
КонецПроцедуры

Если система «перепрыгивает» серверную процедуру, значит, на сервере не установлен ключ -debug. В этом случае необходимо обратиться к системному администратору, чтобы он добавил этот параметр в строку запуска службы 1C:Enterprise 8.3 Server Agent в реестре Windows или в настройках конфигурационного файла на Linux.

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

Даже если ключ -debug установлен, точки останова во внешних обработках могут не срабатывать из-за специфики их запуска. В управляемых формах (БГУ 2.0) внешние обработки часто исполняются в фоновых заданиях или через временные файлы. Настроим автоматический захват этих процессов.

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

Почему важны именно Фоновые задания? В конфигурациях на базе БСП (Библиотека стандартных подсистем), к которым относится и БГУ, запуск длительных операций из внешних обработок часто делегируется фоновому заданию на сервере. Если этот флаг не стоит, ваш Конфигуратор просто «не заметит» запуск нового серверного потока, в котором выполняется ваш код.

Особенности внешних обработок и «Безопасный режим»

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

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

  1. Открывать обработку напрямую через Файл — Открыть в режиме Предприятия, предварительно открыв этот же файл в Конфигураторе.
  2. Проверить флаг Безопасный режим. В БГУ 2.0 в карточке дополнительной обработки часто стоит галочка «Безопасный режим». В этом режиме возможности отладки и выполнения некоторых операций могут быть ограничены. Попробуем временно его отключить.

Альтернативный метод: Отладка «сообщениями» и Журналом регистрации

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

Рассмотрим использование Журнала регистрации. Это надежнее, чем метод Сообщить(), так как сообщения могут не вернуться с сервера на клиент при возникновении ошибки или при работе в фоновом задании.


&НаСервере
Процедура ВыполнитьДействиеНаСервере(Параметры)
    // Вместо точки останова пишем в лог
    ЗаписьЖурналаРегистрации("ОтладкаОбработки", 
        УровеньЖурналаРегистрации.Предупреждение, , , 
        "Значение переменной X: " + Параметры.ЗначениеX);
    
    // Ваш код...
КонецПроцедуры

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

Протоколы отладки: TCP против HTTP

Выясним, какой протокол используется в вашей системе. В современных версиях платформы 8.3 существует два режима. Если ваша база опубликована на веб-сервере или находится в облаке, скорее всего, используется HTTP-отладка. Для ее работы требуется наличие службы dbgs.

Если вы работаете через локальную сеть, проверьте настройки брандмауэра. Для TCP-отладки должны быть открыты порты из диапазона 1560–1591. Если порты блокируются антивирусом или сетевым экраном, Конфигуратор увидит сеанс, но не сможет «зацепиться» за него для передачи данных отладки.

Резюме действий для восстановления отладки

Подводя итог, если точка останова не срабатывает, пройдем по чек-листу:

  1. Убедимся, что Конфигуратор подключен к сеансу (Меню Отладка — Подключение).
  2. Проверим наличие ключа -debug у службы сервера (через запуск серверной процедуры с F11).
  3. Включим автоматическое подключение фоновых заданий в настройках отладки.
  4. Если ничего не помогает — используем ЗаписьЖурналаРегистрации для анализа данных «на лету» без остановки процесса.

Использование этих методов позволит вам эффективно диагностировать ошибки в 1С:БГУ 2.0 даже в сложных условиях клиент-серверной архитектуры.

← На главную