Разработка расширений в среде 1С:Предприятие 8.3 — это мощный инструмент кастомизации, однако программисты часто сталкиваются с ситуацией, когда отладчик отказывается останавливаться на установленных точках (breakpoint). В этой статье мы подробно разберем, почему это происходит, как продиагностировать проблему и какие настройки необходимо проверить в первую очередь.
Когда мы устанавливаем точку останова в модуле расширения, мы ожидаем, что выполнение кода прервется. Если этого не происходит, первое, что нам нужно сделать, — это убедиться, что код вообще выполняется. Рассмотрим пример кода, который часто используется для проверки прохождения алгоритма через определенную точку:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Сообщить("Начало процедуры");
Название = Параметры.Ссылка;
Сообщить("Данные получены");
КонтИнформация = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъекта(Название, "", ТекущаяДата(), Ложь);
Сообщить("Процедура завершена");
КонецПроцедуры
Если в окне сообщений вы видите текст "Начало процедуры", значит, управление передается в нужный метод, и проблема кроется именно в настройках взаимодействия конфигуратора и серверного сеанса. Разберем шаги по устранению этой проблемы.
Если вы работаете в клиент-серверном варианте, наиболее вероятная причина — служба Агента сервера 1С:Предприятия запущена без ключа -debug. По умолчанию отладка на сервере выключена для экономии ресурсов. Проанализируем, как это исправить:
1C:Enterprise 8.3 Server Agent.-debug.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent) и перезапустить службу.Важно: В современных версиях платформы (8.3.7+) может использоваться HTTP-отладка. В этом случае вместо ключа -debug используются настройки в файле conf.cfg и специальный сервер отладки dbgs.
Если мы не уверены, попадает ли выполнение в расширение, воспользуемся механизмом Замера производительности. Это отличный способ "увидеть" исполняемый код, даже если точка останова игнорируется.
Отладка -> Замер производительности.Если в появившемся списке вы не видите строк из вашего модуля расширения (например, из процедуры ПриСозданииНаСервере), значит, расширение либо не активно, либо система выполняет стандартный код основной конфигурации вместо вашего.
Часто выполнение кода расширения уходит в фоновые потоки. Для того чтобы отладчик их "подцепил", выполним следующие действия:
Отладка -> Подключение....Настройка и установим флажки "Автоматическое подключение: Фоновые задания" и "Тонкий клиент".Без этих галочек конфигуратор может просто "не знать", что в соседнем потоке сервера выполняется ваш код.
Расширение — это динамический объект. Если оно некорректно подключено, отладка работать не будет. Проверим следующие моменты:
Безопасный режим и Защита от опасных действий. Это часто снимает ограничения на взаимодействие с отладчиком.Иногда возникает ситуация, когда мы изменили код в конфигураторе, но сервер 1С продолжает исполнять старую "скомпилированную" версию модуля, где нашей точки останова еще не было. Рассмотрим, как принудительно обновить состояние сервера:
snacc в каталоге сервера приложений) или перезапуск службы сервера 1С.Если классическая точка останова так и не сработала, воспользуемся хитростью профессионалов. Мы можем заставить систему остановиться в нужном месте, спровоцировав ошибку.
А = 1/0;.Отладка -> Остановка по ошибке.Этот метод позволяет на 100% убедиться, работает ли механизм отладки в данном контексте в принципе.
Подводя итог, если точка останова в расширении не срабатывает, последовательно проверьте: ключ запуска сервера, настройки автоподключения в конфигураторе, безопасный режим расширения и наличие кода в замере производительности. Чаще всего проблема заключается в отключенном режиме отладки на стороне сервера или в том, что сеанс фонового задания не был автоматически подключен к текущему отладчику.