Почему не работает отладка в расширении 1С на серверной базе и как её включить?

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

Часто программисты 1С сталкиваются с ситуацией: в расширении написан код, установлена точка останова, но при выполнении программы в режиме «1С:Предприятие» отладчик просто игнорирует это место. Особенно часто это происходит в клиент-серверных версиях (на SQL Server). Разберем по шагам, почему это происходит и как настроить рабочее окружение так, чтобы отладка в расширениях работала стабильно.

Выясняем причину: почему точка останова не срабатывает?

Прежде всего, проанализируем ситуацию. Если база работает на SQL Server, это означает использование клиент-серверной архитектуры. В этом режиме часть кода выполняется на стороне клиента (в тонком или толстом клиенте), а часть — на стороне сервера 1С:Предприятия. По умолчанию серверная отладка в 1С выключена из соображений производительности. Если ваша точка останова находится в серверном модуле расширения или в методе, помеченном директивой &НаСервере, отладчик не остановится, пока сервер не будет запущен в специальном режиме.

Рассмотрим основные шаги, которые помогут нам оживить отладку.

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

Это самый важный этап. Нам нужно убедиться, что служба сервера 1С запущена с параметром -debug. Проанализируем, как это сделать в ОС Windows через реестр:

  1. Откроем редактор реестра (regedit).
  2. Перейдем к ветке службы вашего сервера. Обычно она находится по пути: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3... (название зависит от версии платформы).
  3. Найдем параметр ImagePath.
  4. В строке запуска после пути к исполняемому файлу ragent.exe нужно добавить пробел и параметр -debug.

Пример того, как должна выглядеть строка запуска:

"C:\Program Files\1cv8\8.3.XX.XXXX\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug

Важно: После внесения изменений в реестр необходимо перезапустить службу 1С:Предприятия. Только после этого сервер начнет «слушать» команды отладчика.

Шаг 2. Выбор протокола отладки (HTTP vs TCP)

Современные версии платформы 1С поддерживают два протокола отладки. Разберем, какой выбрать. Традиционный протокол TCP часто блокируется брандмауэрами или имеет проблемы при работе через NAT. Если стандартная настройка не помогает, попробуем переключиться на HTTP.

Для включения HTTP-отладки на сервере используется ключ -http. В конфигураторе также нужно проверить настройки:

  1. Зайдем в меню Сервис — Параметры.
  2. Перейдем на закладку Отладка.
  3. Выберем протокол Использовать протокол HTTP.

Проанализируем состояние сети: если вы работаете удаленно, убедитесь, что порты (обычно 1560–1591 для TCP или 1562 для HTTP) открыты на сервере.

Шаг 3. Настройка автоматического подключения к фоновым заданиям

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

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

Шаг 4. Особенности расширений: Безопасный режим

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

Шаг 5. Принудительная проверка исполнения кода

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

Посмотрим на пример диагностического кода:


// Вставляем в начало процедуры расширения
ВызватьИсключение "Проверка: Код расширения выполняется!";

Или используем вывод сообщения:

Сообщить("Выполняется серверный метод расширения...");

Если при запуске программы вы не увидели окна с ошибкой или сообщения, значит, проблема не в отладке, а в том, что ваше расширение не «подцепилось». Проанализируем причины:

Шаг 6. Очистка кеша

Иногда отладка «глючит» из-за кеша конфигуратора или локального кеша пользователя. Если точка останова выглядит как «пустой кружок» или перечеркнута, попробуйте очистить папку кеша 1С на вашем компьютере (каталоги в %AppData%\1C\1cv8\). Также помогает полное удаление базы из списка и её повторное добавление.

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

← На главную