Администрирование · 12 мин
Как остановить выполнение программы 1С
Как остановить выполнение программы 1С: прерывание обработки, завершение сеанса, остановка фоновых заданий и службы сервера 1С. Пошаговые инструкции и риски.
Остановить выполнение программы 1С может понадобиться в разных ситуациях: «зависла» длительная обработка, отчёт строится слишком долго, фоновое задание блокирует работу пользователей или сервер 1С перестал отвечать. Способ остановки зависит от того, что именно выполняется — интерактивная операция в клиенте, фоновое задание на сервере или весь серверный процесс целиком.
Важно понимать разницу между «мягким» прерыванием и принудительным завершением. Мягкое прерывание даёт платформе возможность корректно завершить транзакцию и откатить изменения. Принудительное завершение процесса (через диспетчер задач или остановку службы) обрывает работу на любом этапе и может оставить базу в состоянии незавершённых транзакций, фоновых блокировок или повреждённых временных данных.
Ниже разобраны все основные сценарии: от прерывания конкретной обработки в пользовательском сеансе до остановки службы агента сервера 1С. Для каждого способа указаны условия применения, риски и способы проверить результат.
Как прервать длительную операцию в клиенте 1С
Если вы запустили обработку, проведение большого документа, построение отчёта или обмен данными и программа «задумалась», первый способ — штатное прерывание. В толстом и тонком клиенте для этого служит комбинация клавиш Ctrl+Break (на некоторых клавиатурах Break совмещён с Pause). В управляемых формах длительные операции часто сопровождаются индикатором выполнения с кнопкой «Отмена» или «Прервать» — используйте её в первую очередь.
После нажатия Ctrl+Break платформа прерывает выполнение встроенного кода в ближайшей безопасной точке. Если в этот момент выполнялся запрос к базе данных, прерывание может не сработать мгновенно: платформа дождётся завершения обращения к СУБД, после чего остановит выполнение. Это нормальное поведение, а не признак того, что комбинация не сработала.
В файловой базе прерывание почти всегда безопасно: незавершённая транзакция откатывается, данные остаются в целостном состоянии. В клиент-серверном варианте откатом занимается СУБД, и это тоже штатный сценарий. Проблемы возникают в основном при принудительном снятии процесса, а не при штатном прерывании.
Как остановить фоновое задание
Фоновые задания — частый источник проблем: регламентная обработка загружает сервер, блокирует таблицы или «зависает» намертво. В типовых конфигурациях на базе Библиотеки стандартных подсистем есть встроенный инструмент: Администрирование → Обслуживание → Регламентные и фоновые задания (в некоторых конфигурациях — «Регламентные операции»).
В списке заданий найдите нужное по имени метода, пользователю или времени запуска. Активное задание можно выделить и нажать «Отменить». Команда отправляет заданию сигнал отмены: если код задания обрабатывает отмену, выполнение завершится корректно. Если задание зависло в запросе к СУБД, отмена может занять время или не сработать вовсе.
Когда штатная отмена не помогает, задание завершают через консоль кластера серверов 1С: откройте ветку «Сеансы», найдите сеанс фонового задания (в колонке «Приложение» будет «Фоновое задание») и удалите его через контекстное меню. Это принудительное завершение, поэтому применяйте его только после неудачной попытки отмены.
- 1Откройте список регламентных и фоновых заданий в разделе администрирования
- 2Найдите активное задание по имени метода, пользователю или времени начала
- 3Нажмите «Отменить» и подождите 1–2 минуты
- 4Если задание не остановилось — откройте консоль кластера серверов 1С
- 5В ветке «Сеансы» найдите сеанс типа «Фоновое задание» и завершите его
- 6Проверьте журнал регистрации: должна появиться запись о завершении или ошибке задания
Как завершить зависший сеанс пользователя
Если у пользователя «завис» клиент 1С, а сам он не может прервать операцию, администратор завершает его сеанс удалённо. В клиент-серверном варианте это делается в консоли кластера: откройте утилиту администрирования серверов 1С, разверните кластер, перейдите в «Сеансы», найдите нужный сеанс по имени пользователя или компьютера и выберите «Удалить» в контекстном меню.
На стороне пользователя клиентское приложение после удаления сеанса покажет сообщение о разрыве соединения с сервером и закроется. Несохранённые данные в открытых формах будут потеряны — об этом стоит предупредить пользователя до завершения сеанса, если есть такая возможность.
В файловом варианте централизованной консоли сеансов нет. Активных пользователей можно посмотреть через Администрирование → Активные пользователи, но принудительно завершить чужой сеанс отсюда нельзя. Вариант — попросить пользователя выйти, а при невозможности — завершить процесс 1cv8.exe на его компьютере через диспетчер задач (локально или удалённо).
Как остановить зависший процесс 1С через диспетчер задач
Когда клиент 1С не отвечает ни на Ctrl+Break, ни на закрытие окна, остаётся завершение процесса. Откройте диспетчер задач (Ctrl+Shift+Esc), найдите процесс 1cv8.exe (толстый/тонкий клиент) или 1cv8c.exe (тонкий клиент) и нажмите «Снять задачу». Если процессов несколько, ориентируйтесь по имени пользователя и потреблению памяти — зависший процесс часто либо потребляет много ресурсов, либо, наоборот, «застыл» без активности.
На сервере 1С процессы другие: ragent (агент сервера), rmngr (менеджер кластера) и rphost (рабочие процессы, обслуживающие сеансы). Завершать rphost — крайняя мера: один рабочий процесс может обслуживать десятки сеансов, и все они разорвутся. Точечно завершать rphost имеет смысл только если вы точно определили проблемный процесс (например, по аномальному потреблению памяти) и понимаете, какие сеансы пострадают.
Как остановить службу сервера 1С целиком
Полная остановка сервера 1С нужна при обслуживании: обновлении платформы, перезагрузке сервера, работе с СУБД. В Windows откройте оснастку services.msc, найдите службу «Агент сервера 1С:Предприятия» и нажмите «Остановить». Альтернатива — команда в консоли от имени администратора:
net stop "1C:Enterprise 8.3 Server Agent"Перед остановкой службы обязательно завершите сеансы пользователей: разошлите сообщение через консоль кластера, установите блокировку сеансов и дождитесь выхода пользователей. В консоли кластера для информационной базы есть свойство «Блокировка начала сеансов включена» — она не даёт новым пользователям подключаться, пока идёт обслуживание.
После остановки агента сеансы разрываются принудительно. Если в этот момент выполнялись транзакции, СУБД откатит их автоматически — для клиент-серверных баз это штатная ситуация. Тем не менее плановую остановку всегда проводите в нерабочее время и после резервного копирования, если планируются действия с данными.
Как прервать выполнение кода в конфигураторе и отладчике
Разработчику чаще нужно остановить выполнение программы 1С в отладке. В конфигураторе при активной отладке используйте команду Отладка → Остановить (или Shift+F5): выполнение предмета отладки прерывается, а клиентское приложение продолжает работать. Команда «Прервать» приостанавливает выполнение в текущей точке, позволяя посмотреть значения переменных.
Если нужно, чтобы код останавливался сам в определённом месте, расставьте точки останова (F9 на строке). Для программного прерывания из кода используется конструкция, вызывающая исключение, — например, ВызватьИсключение "Описание ошибки";. Это штатный способ прекратить выполнение процедуры при нарушении условий, при этом транзакция откатится, если она была открыта.
Частые ошибки и как проверить результат
Самая распространённая ошибка — многократное принудительное снятие клиентского процесса с файловой базой во время записи. Это может привести к ошибкам вида «Ошибка формата потока» или повреждению файла 1Cv8.1CD. Если база после аварийного завершения не открывается, используйте утилиту chdbfl.exe из каталога платформы для проверки физической целостности, а затем тестирование и исправление в конфигураторе.
Вторая типичная ошибка — завершение сеанса «вслепую» в консоли кластера. В списке сеансов может быть несколько сеансов одного пользователя (основной, фоновые задания, веб-сервисы). Смотрите на колонки «Приложение», «Начало сеанса» и «Последняя активность», чтобы завершить именно зависший сеанс, а не рабочий.
Третья ошибка — остановка службы сервера без блокировки сеансов и предупреждения пользователей. Итог — потерянные несохранённые данные у десятков сотрудников и шквал обращений. Всегда включайте блокировку сеансов заранее и оставляйте время на завершение работы.
Как проверить результат
Зависший сеанс отсутствует, остальные сеансы работают
Сеанс остался в списке или исчезли лишние сеансы
Есть запись о завершении фонового задания или сеанса
Записей об ошибках нет, но задание числится активным
База открывается, тестирование не выявляет ошибок
Ошибки формата потока, база не открывается
Служба в состоянии «Остановлена», процессы ragent/rphost отсутствуют
Служба «зависла» в состоянии остановки, процессы остались в памяти
Частые вопросы
Что делать, если Ctrl+Break не останавливает операцию?
Проверьте, не выполняется ли в этот момент запрос к СУБД — прерывание сработает только после его завершения. Подождите несколько минут. Если операция выполняется в фоновом задании, отменяйте его через список фоновых заданий или консоль кластера, а не клавишами. В крайнем случае завершите процесс клиента через диспетчер задач.
Можно ли остановить проведение документа на середине?
Да, нажатием Ctrl+Break или кнопки отмены. Проведение выполняется в транзакции, поэтому при прерывании все изменения откатятся — документ останется непроведённым, а данные не пострадают. Частично проведённого документа в базе не останется.
Как узнать, какое фоновое задание грузит сервер?
В консоли кластера откройте список сеансов и отсортируйте по колонкам потребления памяти или длительности вызовов СУБД. Сеансы с типом «Фоновое задание» покажут имя метода. Дополнительно сверьтесь с регламентными заданиями в конфигурации по времени запуска.
Опасно ли перезагружать сервер 1С, пока работают пользователи?
Для клиент-серверных баз аварийный разрыв сеансов не разрушает данные — СУБД откатит незавершённые транзакции. Но пользователи потеряют несохранённые данные в открытых формах. Плановую перезагрузку проводите с блокировкой сеансов и предупреждением, вне рабочего времени.
Как остановить обмен данными, который завис?
Если обмен выполняется интерактивно — нажмите «Прервать» или Ctrl+Break. Если обмен идёт в фоновом задании (типично для синхронизации по расписанию) — отмените задание в списке регламентных и фоновых заданий. После прерывания проверьте журнал регистрации и при необходимости повторите обмен: регистрация изменений обычно сохраняется, и данные будут отправлены повторно.
Чем отличается удаление сеанса от удаления соединения в консоли кластера?
Соединение — это технический канал между клиентом и рабочим процессом, сеанс — логическая сессия пользователя. Завершать следует сеанс: при удалении соединения сеанс может остаться и продолжить удерживать блокировки. Удаление сеанса корректно освобождает все связанные ресурсы.
Что важно запомнить
Начинайте с мягких методов: Ctrl+Break или кнопка «Отмена» для клиентских операций, штатная отмена для фоновых заданий. Зависшие сеансы завершайте через консоль кластера, службу сервера останавливайте только с блокировкой сеансов. Принудительное снятие процессов — крайняя мера, особенно рискованная для файловых баз. После любого прерывания проверяйте журнал регистрации и состояние базы.