Часто программисты 1С сталкиваются с ситуацией: в расширении написан код, установлена точка останова, но при выполнении программы в режиме «1С:Предприятие» отладчик просто игнорирует это место. Особенно часто это происходит в клиент-серверных версиях (на SQL Server). Разберем по шагам, почему это происходит и как настроить рабочее окружение так, чтобы отладка в расширениях работала стабильно.
Прежде всего, проанализируем ситуацию. Если база работает на SQL Server, это означает использование клиент-серверной архитектуры. В этом режиме часть кода выполняется на стороне клиента (в тонком или толстом клиенте), а часть — на стороне сервера 1С:Предприятия. По умолчанию серверная отладка в 1С выключена из соображений производительности. Если ваша точка останова находится в серверном модуле расширения или в методе, помеченном директивой &НаСервере, отладчик не остановится, пока сервер не будет запущен в специальном режиме.
Рассмотрим основные шаги, которые помогут нам оживить отладку.
Это самый важный этап. Нам нужно убедиться, что служба сервера 1С запущена с параметром -debug. Проанализируем, как это сделать в ОС Windows через реестр:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3... (название зависит от версии платформы).ImagePath.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С:Предприятия. Только после этого сервер начнет «слушать» команды отладчика.
Современные версии платформы 1С поддерживают два протокола отладки. Разберем, какой выбрать. Традиционный протокол TCP часто блокируется брандмауэрами или имеет проблемы при работе через NAT. Если стандартная настройка не помогает, попробуем переключиться на HTTP.
Для включения HTTP-отладки на сервере используется ключ -http. В конфигураторе также нужно проверить настройки:
Проанализируем состояние сети: если вы работаете удаленно, убедитесь, что порты (обычно 1560–1591 для TCP или 1562 для HTTP) открыты на сервере.
В расширениях часто переопределяются отчеты или длительные операции, которые по умолчанию выполняются в фоновом режиме. Если точка останова стоит в таком коде, конфигуратор «не подцепит» выполнение этого задания автоматически. Выясним, как это исправить.
В конфигураторе перейдем в меню Отладка — Подключение.... В открывшемся окне нажмем кнопку Настройка автоматического подключения. Здесь обязательно должна стоять галочка Фоновые задания. Рассмотрим ситуацию: вы запускаете отчет, сервер создает отдельный сеанс для фонового задания, и благодаря этой галочке ваш отладчик мгновенно подключается к новому сеансу и останавливается на нужной строке кода.
У каждого расширения есть свойство Безопасный режим. Посмотрим на него внимательнее. Если этот флаг установлен, 1С накладывает ограничения на исполнение кода. В некоторых случаях это может мешать корректной инициализации отладочной сессии для кода расширения. Попробуйте временно снять галочку «Безопасный режим» в свойствах расширения (в конфигураторе) или в интерфейсе программы (Администрирование — Печатные формы, отчеты и обработки — Расширения).
Если настройки верны, но точка останова все равно не срабатывает, нам нужно убедиться, что управление вообще заходит в этот участок кода расширения. Используем метод «грубой силы» — вызов исключения или запись в журнал.
Посмотрим на пример диагностического кода:
// Вставляем в начало процедуры расширения
ВызватьИсключение "Проверка: Код расширения выполняется!";
Или используем вывод сообщения:
Сообщить("Выполняется серверный метод расширения...");
Если при запуске программы вы не увидели окна с ошибкой или сообщения, значит, проблема не в отладке, а в том, что ваше расширение не «подцепилось». Проанализируем причины:
&Перед, но параметры процедуры не совпадают с основной конфигурацией.Иногда отладка «глючит» из-за кеша конфигуратора или локального кеша пользователя. Если точка останова выглядит как «пустой кружок» или перечеркнута, попробуйте очистить папку кеша 1С на вашем компьютере (каталоги в %AppData%\1C\1cv8\). Также помогает полное удаление базы из списка и её повторное добавление.
Подведем итог: для успешной отладки расширения на SQL-базе нам необходимо:
включить режим -debug в реестре,
настроить автоматическое подключение к фоновым заданиям и
убедиться в актуальности кода (избегать динамических обновлений).