Каждый разработчик 1С рано или поздно сталкивается с неприятной ситуацией: при запуске сеанса отладки расставленные в коде точки останова внезапно становятся серыми, перечеркнутыми или неактивными. Вы запускаете выполнение кода, воспроизводите нужное действие пользователя, но программа просто игнорирует точки останова, не останавливая выполнение алгоритма. Особенно часто эта проблема проявляется на современных конфигурациях, таких как Бухгалтерия предприятия 3.0, ERP Управление предприятием или Управление торговлей 11.
В этой статье мы подробно разберем, почему точки останова становятся неактивными, проанализируем неочевидные симптомы этой проблемы и рассмотрим по шагам все способы ее решения.
Проанализируем ключевой симптом, с которым часто сталкиваются разработчики: при запуске отладки из Конфигуратора (клавиша F5) пользовательское приложение открывается со странным, урезанным меню и устаревшим интерфейсом вместо привычного современного интерфейса «Такси».
Это однозначно указывает на то, что платформа запускает систему в режиме обычного приложения (толстого клиента в режиме обычного приложения). Поскольку современные типовые конфигурации (включая БП 3.0) полностью разработаны на управляемых формах, при запуске в режиме обычного приложения контекст управляемого приложения просто не инициализируется. Отладчик пытается подключиться к управляемому приложению, но сеанс запущен в режиме legacy. В результате связь между Конфигуратором и исполняемым кодом теряется, а все точки останова в модулях управляемых форм и серверных модулях объектов (например, в процедуре ОбработкаЗаполнения) мгновенно деактивируются.
Разберем по шагам, как исправить режим запуска в Конфигураторе:
После изменения этой настройки перезапустите сеанс отладки. Платформа запустит программу в штатном режиме управляемого приложения с интерфейсом «Такси», и точки останова снова станут активными.
Выясним еще одну причину, которая часто маскируется под аппаратные сбои. В тех же настройках запуска (*Сервис — Параметры — Запуск 1С:Предприятия*) во вкладке *Основные* разработчики часто жестко прописывают имя пользователя и пароль для автоматической авторизации при нажатии клавиши F5.
Если для автоматического входа указан пользователь, у которого в конфигурации отсутствуют права на отладку, то отладчик не сможет подключиться к запущенному сеансу. В платформе «1С:Предприятие 8.3» за возможность отладки отвечают роли, содержащие административные права, либо специализированное системное право «Стандартная отладка».
Для решения этой проблемы выполните следующие действия:
Динамическое обновление (так называемое «демоническое обновление») — это очень удобный инструмент для оперативного внесения изменений в работающую базу данных без отключения пользователей. Однако именно оно чаще всего ломает стабильную работу отладчика.
При динамическом обновлении платформа обновляет конфигурацию в базе данных, но запущенные клиентские сеансы продолжают работать со старыми версиями метаданных, сохраненными в кэше оперативной памяти. Когда Конфигуратор пытается сопоставить строки открытого у вас модуля с кодом, который исполняется в запущенном сеансе клиента, возникает критическое расхождение адресов. Отладчик понимает, что исполняемый код не соответствует открытому исходному коду, и деактивирует точки останова.
Чтобы полностью устранить последствия динамического обновления, выполните следующие шаги:
F7 (или выбрав пункт меню *Конфигурация — Обновить конфигурацию базы данных*).%userprofile%\AppData\Local\1C\1Cv8 и %userprofile%\AppData\Roaming\1C\1Cv8.В современных конфигурациях 1С огромное количество операций выполняется в фоновом режиме. Например, заполнение документов при создании, проведение документов, расчеты себестоимости или формирование отчетов часто делегируются фоновым заданиям, чтобы не блокировать интерфейс пользователя.
Если вы установили точку останова в общем модуле, который выполняется на сервере в рамках фонового задания, по умолчанию отладчик на ней не остановится. Точка останова в этот момент может визуально выглядеть неактивной или просто игнорироваться.
Рассмотрим, как настроить автоматический перехват фоновых заданий отладчиком:
Если вы работаете с файловой базой данных, существует еще один отличный способ гарантировать срабатывание точек останова в фоновых задачах. Вы можете принудительно перевести выполнение всех фоновых заданий в основной поток клиентского приложения. Для этого в параметрах запуска вашей информационной базы в окне запуска 1С (стартере) укажите специальный ключ запуска:
/РежимОтладки
При использовании этого ключа файловая платформа будет выполнять фоновые задания синхронно в рамках вашего текущего сеанса, что позволит отлаживать их в обычном режиме без дополнительных настроек подключения.
Даже когда вы работаете с локальной файловой базой данных на своем персональном компьютере, механизмы отладки 1С активно используют сетевой стек. Конфигуратор и клиентское приложение общаются между собой по протоколам TCP/IP или HTTP через сетевую петлю (IP-адрес локального хоста 127.0.0.1), используя диапазон свободных портов (обычно это порты в интервале от 1560 до 1591).
Довольно часто локальный брандмауэр Windows, сторонний файрвол или встроенный модуль защиты антивирусного программного обеспечения блокируют прохождение локальных пакетов между процессами 1cv8.exe (Конфигуратор) и 1cv8c.exe (Тонкий клиент). Платформа не может установить обратную связь, из-за чего точки останова моментально сереют при старте приложения.
Проанализируем шаги для диагностики и устранения сетевых блокировок:
1cv8.exe и 1cv8c.exe, находящиеся в папке установленной платформы, например, C:\Program Files\1cv8\8.3.XX.XXXX\bin\) в список исключений вашего сетевого экрана и антивируса для любых входящих и исходящих соединений.Начиная с версии платформы 8.3.14, разработчики 1С получили возможность использовать новый, более современный протокол отладки на основе HTTP. По умолчанию в настройках отладки может быть выбран автоматический режим определения протокола.
Однако из-за специфических настроек сетевых адаптеров, использования VPN-соединений или наличия прокси-серверов в локальной сети автоматический выбор протокола может работать некорректно. В этом случае отладчик и клиентское приложение пытаются общаться по разным протоколам, что приводит к неактивности точек останова.
Попробуйте принудительно переключить протокол отладки. Разберем, как это сделать:
default.vrd корректно настроен модуль отладки.Используя предложенные инструкции и последовательно исключая возможные проблемы с режимом запуска, правами пользователей, динамическими обновлениями и сетевыми блокировками, вы гарантированно вернете работоспособность механизма отладки и сможете продолжить комфортную разработку в среде 1С:Предприятие.