Остановка зависших операций, фоновых заданий и сеансов в 1С 8.3
Содержание
Чтобы отменить выполнение задачи
в 1С прямо из окна программы, нажмите Ctrl+Break. Это стандартная горячая клавиша платформы 1С:Предприятие 8.3: она прерывает код, который выполняется на клиенте и умеет проверять прерывание. Если окно не реагирует, задача ушла на сервер или работает фоном, нужны другие методы: отмена фонового задания, завершение сеанса в консоли кластера или команда rac.
Типичная ситуация: бухгалтер запустил оборотно-сальдовую ведомость за три года без отборов, курсор крутится десятую минуту, а закрыть окно нельзя. Ниже разобраны все уровни остановки, от безопасного к радикальному. Порядок важен: каждый следующий способ грубее предыдущего.
Ctrl+Break: как прервать операцию с клавиатуры
Комбинация Ctrl+Break работает в тонком и толстом клиенте, в файловом и клиент-серверном варианте. Платформа ловит её в моменты, когда код проверяет прерывание пользователя. После нажатия программа либо спросит, прервать ли выполнение, либо сразу остановит процедуру с сообщением об ошибке.
Что нужно знать о поведении комбинации:
- ✅ Прерывает длинные циклы на клиенте, если в них вызывается
ОбработкаПрерыванияПользователя(). Типовые обработки обычно так и написаны. - ✅ Срабатывает при отладке: в отладчике Конфигуратора это команда остановки выполнения на текущей строке.
- ⏳ Во время тяжёлого вызова сервера реакция может прийти только после возврата управления клиенту. Иногда это минуты.
- ❌ Не останавливает фоновые и регламентные задания: они живут в отдельном сеансе на сервере.
- ❌ Не помогает, если код написан без проверки прерывания. Это вопрос к разработчику, а не к пользователю.
Где Break на ноутбуке
На многих ноутбуках отдельной клавиши Break нет. Варианты:
Ctrl+Fn+B— так Break эмулируется на многих моделях Lenovo и части других производителей.Ctrl+Fn+PauseилиCtrl+Pause— если на клавиатуре есть Pause, она даёт тот же код, что и Break.- Экранная клавиатура Windows:
Win+R→osk→ Enter. Зажмите на ней Ctrl, затем нажмите Pause. Если клавиши Pause не видно, включите дополнительные клавиши в параметрах экранной клавиатуры.
Если операция запущена в окне длительной операции с индикатором (так работают отчёты и обработки в типовых конфигурациях на БСП), у окна есть кнопка «Отмена». Она отменяет фоновое задание, которое делает работу, и действует надёжнее Ctrl+Break.
Клавиша Esc в 1С закрывает формы, но выполнение кода не прерывает. Многократные нажатия Esc во время зависания бесполезны.
Отмена фоновых и регламентных заданий в 1С
Многие действия в современных конфигурациях выполняются не в вашем окне, а фоновыми заданиями: формирование отчётов, загрузка банковских выписок, обмен данными, обновление классификаторов, расчёт себестоимости. Регламентные задания запускаются сами по расписанию и тоже работают фоном.
В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11 и другие) список открывается по пути:
Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания
В форме две вкладки: регламентные задания и фоновые задания.
Как остановить фоновое задание
- Откройте вкладку фоновых заданий.
- Отберите задания в состоянии «Выполняется» (колонка состояния, сортировка по ней).
- Выделите зависшее задание. В наименовании видно, что это за работа: обмен, загрузка, отчёт.
- Нажмите команду отмены в командной панели списка.
- Обновите список: задание перейдёт в состояние «Отменено».
Отмена не мгновенная. Задание получает сигнал и завершается, когда платформа может безопасно прервать его. Транзакция, которая была открыта в этот момент, откатывается: незаписанные данные не сохранятся, но и половинчатых изменений не останется.
Как остановить регламентное задание
Остановить уже запущенный экземпляр можно так же, через вкладку фоновых заданий: каждый запуск регламентного задания виден там отдельной строкой. Чтобы задание не стартовало снова:
- 🔕 откройте карточку регламентного задания и снимите флажок «Включено»;
- 🕐 или поменяйте расписание, если задание мешает только в рабочие часы;
- 🧱 для всей базы в клиент-серверном варианте: в консоли кластера, в свойствах информационной базы, включите блокировку регламентных заданий.
Не отключайте задания вслепую. Задания обмена с ЕГАИС, ЭДО, банком или сайтом отвечают за реальные бизнес-процессы. Отключили на время — запишите, какие, и включите обратно.
Консоль заданий и программная отмена для администратора
Типовая форма удобна, но не всегда доступна: например, когда задания созданы не через БСП или нужно отменить сразу пачку. Для этого администраторы используют внешнюю обработку «Консоль заданий». Она показывает регламентные и фоновые задания базы, их состояние, время старта, сообщения об ошибках, и умеет отменять активные задания.
Порядок работы с внешней обработкой:
- Откройте файл обработки через
Файл → Открытьв режиме 1С:Предприятие. - Если открытие внешних обработок запрещено, это настраивается в профиле безопасности или правах пользователя. Включает их администратор.
- В списке фоновых заданий отберите активные и отмените нужные.
Если обработки под рукой нет, задание можно отменить кодом. Пример для серверной процедуры внешней обработки, которая отменяет все активные фоновые задания с заданным ключом:
&НаСервере
Процедура ОтменитьЗаданияПоКлючуНаСервере(КлючЗадания)
Отбор = Новый Структура;
Отбор.Вставить("Состояние", СостояниеФоновогоЗадания.Активно);
Отбор.Вставить("Ключ", КлючЗадания);
Задания = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор);
Для Каждого Задание Из Задания Цикл
Задание.Отменить();
Сообщить("Отменено: " + Задание.Наименование);
КонецЦикла;
КонецПроцедуры
Если ключ не задан, уберите его из отбора: тогда будут отменены все активные задания. В рабочей базе так делать только вне рабочего времени — вместе с зависшим заданием оборвутся обмены и отчёты других пользователей.
Для одного задания удобнее искать по уникальному идентификатору: ФоновыеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор), затем вызвать у результата Отменить().
Сравнение способов отменить выполнение задачи
| Способ | Когда применять | Что потеряете |
|---|---|---|
Ctrl+Break | Завис отчёт или обработка в вашем окне | Только результат текущей операции |
| Кнопка «Отмена» в окне длительной операции | Отчёт или обработка с индикатором прогресса | Только результат текущей операции |
| Отмена фонового задания в списке заданий | Висит обмен, загрузка, расчёт | Данные незавершённой транзакции |
| Отключение регламентного задания | Задание стартует снова и снова | Автоматическую работу процесса до включения |
| «Активные пользователи» → завершение сеанса | Пользователь «завис» и держит блокировки | Несохранённые данные этого пользователя |
Консоль кластера или rac session terminate | Сеанс не завершается из 1С | Несохранённые данные сеанса |
Диспетчер задач, процесс 1cv8c.exe или 1cv8.exe | Окно клиента полностью не отвечает | Всё несохранённое в этом окне |
Завершение рабочего процесса rphost | Последнее средство на сервере | Сеансы всех пользователей этого процесса |
Двигайтесь сверху вниз. Переходите к следующей строке, только когда предыдущая не сработала за разумное время.
Как завершить зависший сеанс в консоли кластера и через rac
Если процесс на сервере не реагирует на отмену, остаётся завершить сеанс целиком. Сначала попробуйте изнутри 1С: в типовых конфигурациях есть список «Активные пользователи» в разделе Администрирование → Обслуживание. Там выделяют сеанс и завершают его; в клиент-серверном варианте программа попросит логин и пароль администратора кластера, если он задан.
Через консоль администрирования серверов
- Запустите «Администрирование серверов 1С Предприятия» на машине, где установлены средства администрирования.
- Раскройте дерево: центральный сервер →
Кластеры→ ваш кластер →Информационные базы→ нужная база →Сеансы. - Найдите сеанс по пользователю, компьютеру и времени начала. Колонки с объёмом вызовов и временем вызова подскажут, кто нагружает сервер.
- Через контекстное меню выберите
Удалить. Сеанс будет принудительно завершён.
Если консоль не открывается из-за ошибки регистрации оснастки, её восстанавливают перерегистрацией библиотеки radmin.dll той версии платформы, что и сервер:
regsvr32 "C:\Program Files\1cv8\8.3.24.1586\bin\radmin.dll"
Номер версии в пути замените на свой, командную строку запустите от имени администратора.
Через rac на сервере без графической консоли
Утилита rac работает через сервер администрирования ras, который должен быть запущен. Последовательность:
rac cluster list
rac infobase summary list --cluster=<uuid_кластера>
rac session list --cluster=<uuid_кластера> --infobase=<uuid_базы>
rac session terminate --cluster=<uuid_кластера> --session=<uuid_сеанса>
Если на кластере задан администратор, добавьте параметры авторизации; их точные имена смотрите в rac help session.
Завершение сеанса обрывает работу пользователя без сохранения. Предупредите его заранее. Убивать процесс rphost в диспетчере задач сервера ещё опаснее: оборвутся все сеансы, которые обслуживает этот рабочий процесс. Делайте это только вне рабочих часов или когда другого выхода нет.
Файловая база
В файловом варианте консоли кластера нет. Зависший клиент закрывают через диспетчер задач Windows: процесс 1cv8c.exe для тонкого клиента
или 1cv8.exe для толстого клиента и Конфигуратора. Если база осталась «занятой» после аварийного закрытия, проверьте, не висит ли процесс у другого пользователя на терминальном сервере.
Какие права нужны, чтобы отменять чужие задачи
Прервать свою операцию через Ctrl+Break может любой пользователь. Для остального нужны права администратора, и их два уровня.
Права в информационной базе. Список регламентных и фоновых заданий, «Активные пользователи» и завершение чужих сеансов в типовых конфигурациях доступны пользователю с профилем полных прав (роль «Администратор системы» или «Полные права»). Рядовой бухгалтер этих команд не увидит, и это правильно.
Права в кластере серверов. Консоль кластера и rac проверяют администратора кластера, а не пользователя базы. Это отдельная учётная запись, которую задают в свойствах кластера. Если она не задана, управлять кластером может любой, кто дотянется до консоли по сети, поэтому на рабочем сервере администратора кластера стоит завести.
Практичная схема для организации:
- 👤 пользователи — только своя
Ctrl+Breakи кнопка «Отмена»; - 🛠 ответственный бухгалтер или 1С-ник — профиль полных прав в базе для работы с заданиями и активными пользователями;
- 🖥 системный администратор — администратор кластера, доступ к консоли и
rac.
Пароль администратора кластера держите у двух человек, не больше. Если он утерян, не пересоздавайте кластер: остановите службу сервера 1С вне рабочего времени и восстановите файлы настроек кластера из резервной копии или обратитесь к тому, кто настраивал сервер.
Почему 1С зависает и как реже отменять задачи
Отмена лечит симптом. Если одна и та же операция зависает каждую неделю, ищите причину.
Частые причины долгого выполнения:
- 📊 Тяжёлые отчёты без отборов. Оборотка за несколько лет по всем субконто или анализ субконто по всей номенклатуре грузят сервер на минуты.
- 🔒 Ожидание блокировки. Один пользователь проводит документ в транзакции, другой ждёт. Когда ожидание превышает таймаут, платформа выдаёт ошибку
Конфликт блокировок при выполнении транзакциис текстом о превышении времени ожидания блокировки. - 🌐 Обращения к внешним сервисам. Обмен с банком, ЭДО или сайтом висит, если удалённая сторона не отвечает, а таймаут соединения в коде не задан.
- 🔁 Ошибка в доработке. Бесконечный цикл или запрос в цикле в самописной обработке.
- 🗄 Состояние сервера. Устаревшая статистика СУБД, нехватка памяти, переполненный диск.
Что делать на практике:
- Для тяжёлых отчётов задавайте период и отборы до формирования. Варианты отчётов с отборами сохраните, чтобы не настраивать каждый раз.
- Регламентные задания обмена и пересчёта перенесите на нерабочее время, разведите по времени, чтобы они не стартовали одновременно.
- Попросите разработчика добавить
ОбработкаПрерыванияПользователя()в длинные клиентские циклы и таймауты вHTTPСоединение. ТогдаCtrl+Breakначнёт срабатывать. - Для разбора блокировок и медленных вызовов включите технологический журнал на сервере. Он покажет, какой запрос и какой пользователь держал ресурс.
- Регулярно обслуживайте СУБД: обновление статистики и перестроение индексов по расписанию.
Частые вопросы
Сохранятся ли данные, если прервать операцию?
Можно ли отменить проведение группы документов, запущенное обработкой?
Ctrl+Break или отмену фонового задания. Уже проведённые к этому моменту документы останутся проведёнными, проверьте их по журналу документов.Чем удаление сеанса отличается от удаления соединения в консоли кластера?
Освобождается ли лицензия после принудительного завершения сеанса?
rac session list --licenses.