Разберем ситуацию, с которой часто сталкиваются разработчики при работе с крупными типовыми конфигурациями, такими как 1С:Управление торговлей 11, ERP 2.5 или Комплексная автоматизация. Суть проблемы заключается в следующем: вы устанавливаете точку останова в модуле формы, например, в процедуре ПриСозданииНаСервере, запускаете отладку, открываете нужный объект в режиме «Предприятие», но система игнорирует точку останова, хотя код явно должен исполняться. Проанализируем причины этого поведения и найдем решение.
Прежде чем углубляться в архитектуру конфигурации, убедимся, что сама среда настроена корректно для работы отладчика. Если точка останова не срабатывает только в серверных процедурах, первым делом должна быть проведена диагностика среды.
Выясним, запущен ли сервер с ключом -debug. Рассмотрим, как это сделать:
ragent.exe.-debug.Посмотрим на настройки в самом Конфигураторе. Перейдем в меню Отладка — Подключение. Нажмем кнопку Автоматическое подключение. Здесь критически важно установить флаги для клиентского приложения, серверных вызовов и фоновых заданий.
Если настройки сервера верны, значит причина кроется в логике самого справочника Партнеры. В типовых конфигурациях 1С используется событие ОбработкаПолученияФормы, которое располагается в модуле менеджера объекта. Для тех, кто профессионально занимается модификацией логики, полезно использовать фреймворк для эффективной работы с событиями.
В УТ 11 справочники «Партнеры» и «Контрагенты» могут работать в разных режимах. Когда опция «Использовать партнеров и контрагентов раздельно» выключена, вместо стандартной ФормаЭлемента вызывается ФормаЭлементаРеквизитыКонтрагента. Рассмотрим пример кода в модуле менеджера:
Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, СтандартнаяОбработка)
Если ВидФормы = "ФормаЭлемента" Тогда
Если ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровИКонтрагентовРаздельно") Тогда
// Используется стандартная форма
Иначе
// Переопределяем путь к форме
ВыбраннаяФорма = "Справочник.Партнеры.Форма.ФормаЭлементаРеквизитыКонтрагента";
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Выясним причину неудачи: если вы поставили точку останова в одной форме, а система открыла другую, отладчик не остановится. Чтобы точно понимать, какие данные загружены в открытую форму, можно использовать инструмент Смотритель для просмотра всех реквизитов объекта.
Если вы не уверены, какая именно форма открывается, воспользуемся замером производительности. Рассмотрим алгоритм действий:
В открывшемся окне мы увидим полные пути к методам.
Изучая механизм расширений в 1С, проанализируем ситуацию, когда расширение перехватывает управление с помощью аннотации &Вместо. В этом случае код в основной конфигурации игнорируется. Чтобы быстро проверить все доработки, удобно использовать выгрузку всех расширений в файлы для проведения глобального поиска по коду.
Посмотрим на возможный сценарий в модуле расширения:
&Вместо("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Собственный код расширения
КонецПроцедуры
Если вы работаете не только с расширениями, но и с внешними модулями, вам может пригодиться набор расширений для одновременной отладки внешних обработок, которые часто интегрируются в справочники типовых решений.
В последних версиях платформы важно правильно выполнить настройку HTTP-отладки в 1С. Если база опубликована на веб-сервере:
default.vrd на наличие debug="true".Таким образом, мы рассмотрели основные причины, по которым отладчик «пролетает» мимо цели. Главный вывод: всегда проверяйте, не подменяется ли форма программно в модуле менеджера или расширении, и используйте специализированные инструменты диагностики для экономии времени.