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

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

Как прервать обработку в 1С: все рабочие способы

Как прервать длительную обработку в 1С: отмена через Ctrl+Break, остановка фоновых заданий, завершение сеанса в консоли кластера и программная отмена.

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

Главный риск при принудительной остановке — незавершённая транзакция и частично записанные данные. Если обработка записывает документы или изменяет регистры, прерывание «в лоб» может оставить базу в промежуточном состоянии. Поэтому перед остановкой важно понять, что именно выполняется, и после прерывания проверить целостность данных.

Как определить, где выполняется обработка

Прежде чем что-то прерывать, выясните режим выполнения. От этого зависит и инструмент остановки, и риски. Признаки различить несложно: если обработка запущена из формы и окно 1С «зависло» с надписью «Ожидание ответа сервера» — код выполняется в текущем сеансе. Если пользователь продолжает работать, а процесс идёт «где-то в фоне» — это фоновое задание.

Регламентные задания (ночная выгрузка, синхронизация, расчёт итогов) запускаются планировщиком по расписанию и тоже исполняются как фоновые. Их список и состояние видны в разделе администрирования. В файловой базе фоновые задания выполняются в отдельном процессе на компьютере пользователя, в клиент-серверной — на сервере 1С.

Окно 1С не отвечаетОбработка идёт в текущем сеансе

Попробуйте Ctrl+Break или дождитесь тайм-аута

Работать можно, процесс в фонеВыполняется фоновое задание

Откройте список фоновых заданий и отмените нужное

Нагрузка на сервер, задание по расписаниюРегламентное задание

Отмените задание и при необходимости отключите расписание

Сеанс завис полностьюКлиент не реагирует

Завершайте сеанс через консоль кластера или диспетчер задач

Прерывание обработки сочетанием Ctrl+Break

Классический способ остановить выполняющийся код в клиентском приложении — нажать Ctrl+Break (на некоторых клавиатурах Break совмещён с клавишей Pause). Платформа прерывает исполнение встроенного языка в текущей точке и выводит сообщение о прерывании обработки. Способ работает в толстом клиенте и в отладчике.

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

В тонком клиенте и веб-клиенте сочетание Ctrl+Break обычно недоступно или работает нестабильно: код исполняется на сервере, и клиент не может его прервать напрямую. В этом случае переходите к отмене фонового задания или завершению сеанса.

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

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

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

Отмена регламентного задания делается так же, но дополнительно имеет смысл временно снять флажок «Использование» в расписании, чтобы планировщик не запустил его повторно через минуту после отмены.

Порядок отмены фонового задания
  1. 1
    Откройте Администрирование → Поддержка и обслуживание → Фоновые задания
  2. 2
    Найдите задание в состоянии «Выполняется» по имени метода и времени начала
  3. 3
    Выделите задание и нажмите «Отменить»
  4. 4
    Убедитесь, что состояние сменилось на «Отменено»
  5. 5
    Проверьте журнал регистрации на предмет ошибок и частичной записи данных

Завершение сеанса через консоль кластера

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

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

В файловой базе консоли кластера нет. Зависший клиент завершайте через диспетчер задач Windows: найдите процесс 1cv8.exe (или 1cv8c.exe для тонкого клиента) и снимите задачу. Учтите, что при монопольном файловом доступе аварийное завершение может оставить блокировки — другим пользователям понадобится перезайти в базу.

Программная отмена и контроль прерывания в коде

Разработчик может предусмотреть корректную остановку заранее. Для фоновых заданий программная отмена выполняется методом менеджера: ФоновыеЗадания.НайтиПоУникальномуИдентификатору(Ид).Отменить(). Регламентные задания отменяются аналогично через РегламентныеЗадания.

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

bsl
Для Каждого Строка Из ТаблицаДанных Цикл
    ОбработкаПрерыванияПользователя();
    // ... обработка строки ...
КонецЦикла;

// Отмена фонового задания:
Задание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания);
Если Задание <> Неопределено Тогда
    Задание.Отменить();
КонецЕсли;

Если обработка изменяет данные, проектируйте её так, чтобы прерывание было безопасным: либо вся работа в одной транзакции (тогда отмена откатит всё), либо с журналированием прогресса, чтобы при повторном запуске пропустить уже обработанные объекты.

Что проверить после прерывания

Само по себе сообщение «Обработка прервана» не гарантирует чистого состояния базы. Откройте журнал регистрации («Администрирование» → «Журнал регистрации») и отфильтруйте события за период работы обработки: там видно, какие объекты успели записаться и на чём возникла ошибка.

Если обработка проводила документы, проверьте несколько последних по времени: у частично проведённого документа могут отсутствовать движения или быть рассинхронизация с регистрами. При сомнениях перепроведите затронутые документы или запустите обработку заново — корректно написанная обработка должна быть идемпотентной, то есть безопасной при повторном запуске.

Контрольные точки

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

Состояние задания в списке фоновых
Норма

«Отменено» или «Завершено»

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

Осталось «Выполняется» — отмена не прошла, завершайте сеанс

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

Записи об отмене, без массовых ошибок записи

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

Ошибки СУБД, обрывы транзакций, сообщения о блокировках

Последние обработанные документы
Норма

Проведены полностью, движения на месте

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

Документ проведён, но движений нет или они неполные

Доступность базы для других пользователей
Норма

Все заходят и работают нормально

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

Остались зависшие блокировки или сеанс-призрак

Типичные ошибки при прерывании обработки

Самая частая ошибка — многократное нажатие Ctrl+Alt+Del и снятие задачи клиента при первой же «заминке». Тяжёлый запрос к СУБД может идти долго, но штатно; аварийное завершение в этот момент как раз и создаёт проблемы. Дайте платформе несколько минут и посмотрите на активность процесса, прежде чем убивать его.

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

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

Когда прерывать нельзя: особые случаи

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

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

Маршрут решения

Как выбрать способ остановки

Обработка запущена из формы, толстый клиент, окно «подвисло»Нажмите Ctrl+Break и подождите 1–2 минуты
Код выполняется в фоне, пользователь работаетОтмените задание в списке фоновых заданий
Клиент полностью не отвечает, клиент-серверная базаУдалите сеанс в консоли кластера серверов
Файловая база, клиент завис намертвоСнимите задачу 1cv8.exe в диспетчере, затем проверьте базу
Идёт обновление конфигурации БД или обменНе прерывайте без резервной копии; сначала проверьте активность на СУБД

FAQ: частые вопросы о прерывании обработок в 1С

Почему Ctrl+Break не срабатывает?

Чаще всего потому, что управление находится не во встроенном языке: выполняется запрос к СУБД, вызов внешней компоненты или COM-объекта. Прерывание произойдёт только после возврата в код 1С. В тонком и веб-клиенте сочетание может быть недоступно вовсе — прерывайте задание на сервере.

Можно ли прервать обработку у другого пользователя?

Да, если у вас есть административные права. Чужое фоновое задание отменяется в общем списке фоновых заданий, а зависший сеанс завершается через консоль кластера. Обычный пользователь без прав администратора может отменять только свои задания.

Что будет с данными при прерывании обработки?

Если запись шла внутри одной транзакции — она откатится целиком, данных не останется. Если объекты записывались по одному вне общей транзакции — уже записанная часть сохранится. Проверьте журнал регистрации и последние изменённые объекты, чтобы понять, где обработка остановилась.

Как остановить регламентное задание навсегда?

Отмените текущее выполнение в списке фоновых заданий, затем откройте список регламентных заданий и снимите флажок «Использование» у нужного задания. Без этого шага планировщик запустит его снова по расписанию.

Опасно ли снимать процесс 1cv8.exe через диспетчер задач?

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

Как сделать обработку, которую безопасно прерывать?

Добавьте вызов ОбработкаПрерыванияПользователя() внутрь цикла, выводите прогресс через ДлительныеОперации.СообщитьПрогресс() и проектируйте логику так, чтобы повторный запуск пропускал уже обработанные объекты — например, по признаку в самих данных или в журнале обработки.

Итог

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

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