Разработка и Конфигурация · 9 мин
Как прервать отладку в 1С: способы остановки и решение проблем
Как прервать отладку в 1С: остановка в конфигураторе, клавиша Shift+F9, завершение зависшего сеанса через консоль кластера и диспетчер задач.
Отладка в 1С — штатный инструмент разработчика, но иногда её нужно прервать досрочно: код ушёл в бесконечный цикл, точка останова сработала не там, или отлаживаемый сеанс завис и не реагирует. В большинстве случаев достаточно одной команды в конфигураторе, но при зависании клиентского приложения или сервера потребуются дополнительные действия.
Способ остановки зависит от того, где именно «застрял» процесс: в управляемом конфигураторе, в клиентском приложении пользователя или на сервере 1С:Предприятия. Ниже разобраны все рабочие варианты — от штатной кнопки «Стоп» до принудительного завершения сеанса через консоль кластера.
Важно понимать: прерывание отладки не откатывает уже выполненные изменения в базе. Если отлаживаемый код успел записать документы или изменить регистры, эти данные останутся в информационной базе, и их придётся исправлять вручную.
Штатная остановка отладки в конфигураторе
Основной и самый безопасный способ — команда «Стоп» в меню конфигуратора. Откройте меню «Отладка» и выберите пункт «Стоп», либо нажмите сочетание клавиш Shift+F9. Отладка завершится немедленно, выполнение кода прервётся, а клиентское приложение продолжит работу в обычном режиме.
До полной остановки можно использовать промежуточные команды: «Шаг через» (F10), «Шаг в» (F11), «Шаг из» (Shift+F11) и «Продолжить» (F5). Если цель — не прервать отладку, а просто выйти из неудобной точки останова, нажмите F5: выполнение продолжится до следующей точки останова или до конца кода.
Если точки останова мешают, отключите их перед продолжением: «Отладка → Отключить все точки останова». Тогда после нажатия F5 код выполнится до конца без остановок, что фактически завершит отладочный проход.
- 1Переключитесь в окно конфигуратора
- 2Нажмите Shift+F9 или выберите «Отладка → Стоп»
- 3Убедитесь, что строка текущего исполнения исчезла, а клиентское приложение продолжает работать
- 4При необходимости снимите точки останова перед следующим запуском
Что происходит с данными при прерывании
Прерывание отладки — это не транзакционный откат. Все операции записи, которые код успел выполнить до остановки, сохраняются в базе. Если процедура проводила документ и была остановлена посередине, в базе могут остаться частично записанные данные: проведённый документ без движений по всем регистрам или наоборот.
Поэтому перед отладкой кода, изменяющего данные, работайте на копии базы. Если отладка велась на рабочей базе и была прервана в середине записи, проверьте затронутые объекты: отмените проведение документов, которые обрабатывались в момент остановки, и проведите их заново штатными средствами.
Отладка не останавливается: зависшее клиентское приложение
Если код ушёл в бесконечный цикл, конфигуратор может не успевать обрабатывать команду «Стоп» — клиентское приложение занято выполнением и не отвечает. Признаки: окно 1С не реагирует, в диспетчере задач процесс потребляет заметную долю процессора, команда Shift+F9 не даёт эффекта в течение разумного времени.
В этом случае завершите клиентский процесс принудительно. Откройте диспетчер задач (Ctrl+Shift+Esc), найдите процесс 1cv8.exe (толстый клиент) или 1cv8c.exe (тонкий клиент) и снимите задачу. Сеанс на сервере при клиент-серверном режиме завершится по тайм-ауту или его можно закрыть вручную через консоль кластера.
Несохранённые изменения в открытых формах при этом будут потеряны — это неизбежная плата за выход из бесконечного цикла. Динамические списки и открытые документы пользователя восстановлению не подлежат.
Как выбрать способ остановки
Остановка зависшего сеанса на сервере 1С
В клиент-серверном варианте тяжёлый код часто выполняется на сервере, и зависший серверный вызов не остановить закрытием клиента мгновенно — рабочий процесс кластера продолжит исполнение. Откройте консоль администрирования серверов 1С:Предприятия, перейдите в ветку нужного кластера: «Сеансы».
Найдите сеанс отлаживаемого пользователя (ориентируйтесь на имя пользователя, время начала и признак «отладка» в свойствах сеанса) и удалите его через контекстное меню. Если завис целый рабочий процесс rphost, его можно перезапустить в ветке «Рабочие процессы», но это затронет всех пользователей, которых обслуживает этот процесс.
Отладка по HTTP и особенности предметов отладки
В современных версиях платформы по умолчанию используется отладка по протоколу HTTP (через сервер отладки dbgs.exe), а не устаревший TCP-протокол. При проблемах с отключением проверьте настройку в конфигураторе: «Сервис → Параметры → Отладка» — там указывается протокол отладки и способ подключения предметов отладки.
Если конфигуратор не видит зависший сеанс, откройте «Отладка → Подключение» и проверьте список доступных предметов отладки. Иногда сеанс остаётся «висеть» в списке после аварийного завершения клиента — такой предмет отладки можно просто игнорировать, он исчезнет по тайм-ауту.
Для фоновых заданий и внешних соединений подключение к отладке выполняется вручную через то же окно «Подключение». Чтобы прервать отладку фонового задания, достаточно команды «Стоп» — само фоновое задание при этом может продолжить выполнение без отладчика, либо его можно отменить в консоли заданий.
Типичные ошибки при прерывании отладки
Ещё одна частая ситуация: разработчик закрывает зависший конфигуратор, а клиентское приложение остаётся заблокированным в режиме «ожидание отладчика». Лечится это только завершением клиентского процесса — штатно выйти из такого состояния нельзя.
Как проверить, что отладка полностью завершена
Как проверить результат
Исчезла подсветка текущей строки исполнения, команды пошаговой отладки неактивны
Жёлтая стрелка текущей строки осталась, F10/F11 активны
Формы реагируют на ввод, можно продолжать работу
Окно не отвечает, в заголовке признак ожидания
Отладочный сеанс отсутствует в списке сеансов
Сеанс висит с признаком отладки — удалите его вручную
После остановки отладки на рабочей базе дополнительно проверьте объекты, которые обрабатывал отлаживаемый код. Если прерывание произошло в середине цикла записи, перепроведите затронутые документы или восстановите данные из копии.
Что важно запомнить
Штатная остановка — Shift+F9 в конфигураторе. Зависший клиент завершается через диспетчер задач, зависший серверный сеанс — через консоль кластера. Прерывание не откатывает уже записанные данные, поэтому отлаживайте изменяющий код на копии базы.
Частые вопросы
Чем отличаются Shift+F9 и F5 при отладке?
Shift+F9 полностью прекращает отладку и останавливает выполнение кода. F5 («Продолжить») возобновляет выполнение до следующей точки останова или до конца кода — отладка при этом остаётся активной.
Клиент 1С завис в бесконечном цикле, конфигуратор не реагирует. Что делать?
Завершите процесс клиентского приложения (1cv8.exe или 1cv8c.exe) через диспетчер задач Windows. Затем проверьте код на условие выхода из цикла, прежде чем запускать отладку повторно.
Откатятся ли записанные данные, если прервать отладку?
Нет. Прерывание отладки не отменяет уже выполненные операции записи. Все изменения, успевшие попасть в базу, сохранятся — исправлять их нужно вручную или восстановлением из копии.
Как остановить отладку фонового задания?
Командой «Стоп» в конфигураторе вы отключите отладчик, но само фоновое задание может продолжить выполнение. Для полной остановки отмените задание через консоль кластера или обработку управления фоновыми заданиями.
Закрыл конфигуратор, а клиент завис в ожидании отладчика. Как разблокировать?
Штатного способа выйти из этого состояния нет — завершите клиентский процесс через диспетчер задач. Чтобы не попадать в такую ситуацию, всегда останавливайте отладку командой «Стоп» до закрытия конфигуратора.
Не видно зависший сеанс в списке подключения отладки. Почему?
Проверьте протокол отладки в настройках конфигуратора (HTTP или TCP) — предметы отладки отображаются только для активного протокола. Также убедитесь, что в свойствах информационной базы не запрещена отладка.