К статье
Практический материал

Администрирование · 12 мин

Как остановить выполнение программы 1С

Как остановить выполнение программы 1С: прерывание обработки, завершение сеанса, остановка фоновых заданий и службы сервера 1С. Пошаговые инструкции и риски.

Остановить выполнение программы 1С может понадобиться в разных ситуациях: «зависла» длительная обработка, отчёт строится слишком долго, фоновое задание блокирует работу пользователей или сервер 1С перестал отвечать. Способ остановки зависит от того, что именно выполняется — интерактивная операция в клиенте, фоновое задание на сервере или весь серверный процесс целиком.

Важно понимать разницу между «мягким» прерыванием и принудительным завершением. Мягкое прерывание даёт платформе возможность корректно завершить транзакцию и откатить изменения. Принудительное завершение процесса (через диспетчер задач или остановку службы) обрывает работу на любом этапе и может оставить базу в состоянии незавершённых транзакций, фоновых блокировок или повреждённых временных данных.

Ниже разобраны все основные сценарии: от прерывания конкретной обработки в пользовательском сеансе до остановки службы агента сервера 1С. Для каждого способа указаны условия применения, риски и способы проверить результат.

Как прервать длительную операцию в клиенте 1С

Если вы запустили обработку, проведение большого документа, построение отчёта или обмен данными и программа «задумалась», первый способ — штатное прерывание. В толстом и тонком клиенте для этого служит комбинация клавиш Ctrl+Break (на некоторых клавиатурах Break совмещён с Pause). В управляемых формах длительные операции часто сопровождаются индикатором выполнения с кнопкой «Отмена» или «Прервать» — используйте её в первую очередь.

После нажатия Ctrl+Break платформа прерывает выполнение встроенного кода в ближайшей безопасной точке. Если в этот момент выполнялся запрос к базе данных, прерывание может не сработать мгновенно: платформа дождётся завершения обращения к СУБД, после чего остановит выполнение. Это нормальное поведение, а не признак того, что комбинация не сработала.

В файловой базе прерывание почти всегда безопасно: незавершённая транзакция откатывается, данные остаются в целостном состоянии. В клиент-серверном варианте откатом занимается СУБД, и это тоже штатный сценарий. Проблемы возникают в основном при принудительном снятии процесса, а не при штатном прерывании.

Как остановить фоновое задание

Фоновые задания — частый источник проблем: регламентная обработка загружает сервер, блокирует таблицы или «зависает» намертво. В типовых конфигурациях на базе Библиотеки стандартных подсистем есть встроенный инструмент: Администрирование → Обслуживание → Регламентные и фоновые задания (в некоторых конфигурациях — «Регламентные операции»).

В списке заданий найдите нужное по имени метода, пользователю или времени запуска. Активное задание можно выделить и нажать «Отменить». Команда отправляет заданию сигнал отмены: если код задания обрабатывает отмену, выполнение завершится корректно. Если задание зависло в запросе к СУБД, отмена может занять время или не сработать вовсе.

Когда штатная отмена не помогает, задание завершают через консоль кластера серверов 1С: откройте ветку «Сеансы», найдите сеанс фонового задания (в колонке «Приложение» будет «Фоновое задание») и удалите его через контекстное меню. Это принудительное завершение, поэтому применяйте его только после неудачной попытки отмены.

Порядок остановки фонового задания
  1. 1
    Откройте список регламентных и фоновых заданий в разделе администрирования
  2. 2
    Найдите активное задание по имени метода, пользователю или времени начала
  3. 3
    Нажмите «Отменить» и подождите 1–2 минуты
  4. 4
    Если задание не остановилось — откройте консоль кластера серверов 1С
  5. 5
    В ветке «Сеансы» найдите сеанс типа «Фоновое задание» и завершите его
  6. 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С:Предприятия» и нажмите «Остановить». Альтернатива — команда в консоли от имени администратора:

bash
net stop "1C:Enterprise 8.3 Server Agent"

Перед остановкой службы обязательно завершите сеансы пользователей: разошлите сообщение через консоль кластера, установите блокировку сеансов и дождитесь выхода пользователей. В консоли кластера для информационной базы есть свойство «Блокировка начала сеансов включена» — она не даёт новым пользователям подключаться, пока идёт обслуживание.

После остановки агента сеансы разрываются принудительно. Если в этот момент выполнялись транзакции, СУБД откатит их автоматически — для клиент-серверных баз это штатная ситуация. Тем не менее плановую остановку всегда проводите в нерабочее время и после резервного копирования, если планируются действия с данными.

Как прервать выполнение кода в конфигураторе и отладчике

Разработчику чаще нужно остановить выполнение программы 1С в отладке. В конфигураторе при активной отладке используйте команду Отладка → Остановить (или Shift+F5): выполнение предмета отладки прерывается, а клиентское приложение продолжает работать. Команда «Прервать» приостанавливает выполнение в текущей точке, позволяя посмотреть значения переменных.

Если нужно, чтобы код останавливался сам в определённом месте, расставьте точки останова (F9 на строке). Для программного прерывания из кода используется конструкция, вызывающая исключение, — например, ВызватьИсключение "Описание ошибки";. Это штатный способ прекратить выполнение процедуры при нарушении условий, при этом транзакция откатится, если она была открыта.

Частые ошибки и как проверить результат

Самая распространённая ошибка — многократное принудительное снятие клиентского процесса с файловой базой во время записи. Это может привести к ошибкам вида «Ошибка формата потока» или повреждению файла 1Cv8.1CD. Если база после аварийного завершения не открывается, используйте утилиту chdbfl.exe из каталога платформы для проверки физической целостности, а затем тестирование и исправление в конфигураторе.

Вторая типичная ошибка — завершение сеанса «вслепую» в консоли кластера. В списке сеансов может быть несколько сеансов одного пользователя (основной, фоновые задания, веб-сервисы). Смотрите на колонки «Приложение», «Начало сеанса» и «Последняя активность», чтобы завершить именно зависший сеанс, а не рабочий.

Третья ошибка — остановка службы сервера без блокировки сеансов и предупреждения пользователей. Итог — потерянные несохранённые данные у десятков сотрудников и шквал обращений. Всегда включайте блокировку сеансов заранее и оставляйте время на завершение работы.

Типичные ошибки
01
Снятие процесса 1cv8.exe при работе с файловой базой во время записи — риск повреждения файла 1Cv8.1CD
02
Завершение rphost на сервере без анализа сеансов — разрыв соединений у всех обслуживаемых пользователей
03
Закрытие формы длительной операции без кнопки «Отмена» — фоновое задание продолжает работать на сервере
04
Удаление не того сеанса в консоли кластера — завершён сеанс работающего пользователя вместо зависшего
05
Остановка службы агента без блокировки сеансов — потеря несохранённых данных у пользователей
Контрольные точки

Как проверить результат

Список активных сеансов в консоли кластера
Норма

Зависший сеанс отсутствует, остальные сеансы работают

Тревожный признак

Сеанс остался в списке или исчезли лишние сеансы

Журнал регистрации
Норма

Есть запись о завершении фонового задания или сеанса

Тревожный признак

Записей об ошибках нет, но задание числится активным

Состояние базы после аварийного завершения
Норма

База открывается, тестирование не выявляет ошибок

Тревожный признак

Ошибки формата потока, база не открывается

Служба агента сервера после остановки
Норма

Служба в состоянии «Остановлена», процессы ragent/rphost отсутствуют

Тревожный признак

Служба «зависла» в состоянии остановки, процессы остались в памяти

Частые вопросы

Что делать, если Ctrl+Break не останавливает операцию?

Проверьте, не выполняется ли в этот момент запрос к СУБД — прерывание сработает только после его завершения. Подождите несколько минут. Если операция выполняется в фоновом задании, отменяйте его через список фоновых заданий или консоль кластера, а не клавишами. В крайнем случае завершите процесс клиента через диспетчер задач.

Можно ли остановить проведение документа на середине?

Да, нажатием Ctrl+Break или кнопки отмены. Проведение выполняется в транзакции, поэтому при прерывании все изменения откатятся — документ останется непроведённым, а данные не пострадают. Частично проведённого документа в базе не останется.

Как узнать, какое фоновое задание грузит сервер?

В консоли кластера откройте список сеансов и отсортируйте по колонкам потребления памяти или длительности вызовов СУБД. Сеансы с типом «Фоновое задание» покажут имя метода. Дополнительно сверьтесь с регламентными заданиями в конфигурации по времени запуска.

Опасно ли перезагружать сервер 1С, пока работают пользователи?

Для клиент-серверных баз аварийный разрыв сеансов не разрушает данные — СУБД откатит незавершённые транзакции. Но пользователи потеряют несохранённые данные в открытых формах. Плановую перезагрузку проводите с блокировкой сеансов и предупреждением, вне рабочего времени.

Как остановить обмен данными, который завис?

Если обмен выполняется интерактивно — нажмите «Прервать» или Ctrl+Break. Если обмен идёт в фоновом задании (типично для синхронизации по расписанию) — отмените задание в списке регламентных и фоновых заданий. После прерывания проверьте журнал регистрации и при необходимости повторите обмен: регистрация изменений обычно сохраняется, и данные будут отправлены повторно.

Чем отличается удаление сеанса от удаления соединения в консоли кластера?

Соединение — это технический канал между клиентом и рабочим процессом, сеанс — логическая сессия пользователя. Завершать следует сеанс: при удалении соединения сеанс может остаться и продолжить удерживать блокировки. Удаление сеанса корректно освобождает все связанные ресурсы.

Итог

Что важно запомнить

Начинайте с мягких методов: Ctrl+Break или кнопка «Отмена» для клиентских операций, штатная отмена для фоновых заданий. Зависшие сеансы завершайте через консоль кластера, службу сервера останавливайте только с блокировкой сеансов. Принудительное снятие процессов — крайняя мера, особенно рискованная для файловых баз. После любого прерывания проверяйте журнал регистрации и состояние базы.