При переходе на новые релизы платформы 1С:Предприятие (особенно часто это наблюдалось в версиях 8.3.11 и 8.3.12) разработчики часто сталкиваются с неприятной ситуацией: отладка, которая годами работала стабильно, внезапно перестает «цеплять» внешние отчеты и обработки. При этом точки останова в общих модулях или формах документов продолжают работать корректно. Рассмотрим подробно, почему это происходит и какие шаги необходимо предпринять для восстановления работоспособности отладчика в файловом и серверном режимах.
Первым делом проанализируем настройки подключения отладчика. Бывают случаи, когда сеанс отладки формально активен, но связь между Конфигуратором и исполняемым приложением для внешних объектов разорвана. Разберем по шагам, как принудительно переподключить элементы отладки:
Этот простой «трюк» позволяет принудительно обновить фильтры отладки, которые могли некорректно инициализироваться при запуске платформы 8.3.12.
Одной из причин игнорирования точек останова является конфликт идентификаторов во временных файлах. Когда мы открываем внешний отчет через Файл — Открыть, система создает копию объекта во временной директории. Если в кэше остались следы старых версий отчета с тем же именем, отладчик может запутаться и сопоставить точку останова не с тем исполняемым кодом.
Проанализируем ситуацию и выполним следующие действия для очистки «фантомных» связей:
%AppData%\1C\1cv8 и %LocalAppData%\1C\1cv8).ПродажиПоРегионам, переименуем его в ПродажиПоРегионам_Тест.Report1.erf).Такое «шаманство» помогает системе перегенерировать внутренние уникальные идентификаторы (UUID), по которым отладчик связывает исходный текст с кодом в памяти.
Если отладка идет по протоколу TCP/IP, критически важно, чтобы порты из диапазона отладки были открыты и не заняты другими процессами. По умолчанию 1С использует диапазон портов 1560–1591. Выясним причину возможной блокировки:
Проверим настройки в Сервис — Параметры — Отладка. В файловом варианте на платформе 8.3.12 рекомендуется убедиться, что выбран правильный протокол. Если TCP/IP не работает, попробуйте переключиться на HTTP (если это поддерживает ваша конфигурация и версия платформы), указав адрес сервера отладки (например, http://localhost:1550).
Также стоит проверить брандмауэр Windows. Даже если отладка в документах работает, внешние файлы могут обрабатываться системой иначе с точки зрения сетевых разрешений, так как их исполнение инициируется из временных папок.
Многие внешние отчеты используют механизм СКД. В современных версиях платформы компоновка результата может выполняться в фоновом задании. Даже в файловой базе 1С эмулирует многопоточность. Если точка останова стоит в процедуре ПриКомпоновкеРезультата, отладчик может просто «не успеть» подключиться к новому фоновому потоку.
Для проверки этой теории попробуем временно отключить стандартную обработку и выполнить компоновку в основном потоке:
Процедура ПриКомпоновкеРезультата(ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
// Здесь должен быть код ручной компоновки,
// чтобы остаться в контексте текущего сеанса
КонецПроцедуры
Если после этого точка останова сработала, значит, проблема в настройках автоматического подключения к фоновым заданиям (см. пункт про настройки окна «Подключение»).
Если стандартные методы не помогают, проанализируем еще один способ, который часто выручает программистов на релизах 8.3.11/12. Это запуск приложения в режиме Толстого клиента (управляемое приложение).
Выяснилось, что баг платформы часто проявляется именно в Тонком клиенте при работе с внешними файлами. Чтобы сменить режим запуска для отладки, выполним следующее:
Как показывает практика, в этом режиме механизмы взаимодействия отладчика с внешними объектами работают более прямолинейно, обходя ограничения сетевого протокола тонкого клиента.
Начиная с версии 8.3.9, в 1С усилены меры безопасности. Если внешний отчет открывается в Безопасном режиме, работа отладчика внутри него может быть ограничена политиками безопасности системы. Рассмотрим подробнее код открытия отчета (если вы открываете его программно, а не через файл-открыть):
// Пример программного открытия, где отладка может не работать
ВнешниеОбработки.Создать(ПутьКФайлу, Ложь); // Второй параметр - БезопасныйРежим
Если вы используете типовую конфигурацию (например, БСП), убедитесь, что при регистрации внешней обработки снят флаг «Безопасный режим». При интерактивном открытии через Файл — Открыть платформа также может запрашивать подтверждение. Попробуйте в настройках пользователя (или через параметры запуска /DisableStartupMessages) временно отключить защиту от опасных действий для текущей базы.
Проблема отсутствия отладки во внешних отчетах на платформе 8.3.12 чаще всего носит комплексный характер. Мы рекомендуем начать с самого быстрого решения — переподключения элементов отладки и использования толстого клиента. Если это не помогает, переходите к более трудоемким методам: очистке кэша и переименованию объектов. Помните, что стабильность работы отладчика в версиях 8.3.12.xxxx была существенно ниже, чем в последующих сервисных релизах, поэтому при возможности стоит обновить платформу до актуальной версии 8.3.12.1750+ или выше.