Обработка в 1С повисла: останавливаем и запускаем заново без потери данных
Содержание
Закрыли месяц, запустили «Групповую обработку справочников» на 40 тысяч номенклатуры, а через двадцать минут окно не отвечает, курсор крутится, пользователи звонят. Знакомо? Перезапустить обработку в 1С можно почти всегда без перезагрузки сервера: сначала пробуем прервать её изнутри клиента (Ctrl+Break), потом завершаем сеанс в консоли кластера, и только потом трогаем процессы ОС.
Главное в этой ситуации — понять, что именно висит: сама обработка (долгий цикл), ожидание блокировки или упавший клиент. От этого зависит, чем её останавливать и можно ли запускать повторно. Ниже порядок действий от безопасного к жёсткому.
Прежде чем убивать сеанс, убедитесь, что обработка не просто работает долго. Запись в регистры и проведение документов откатываются при завершении, но откат на больших объёмах сам занимает время.
Сначала выясните: зависла или просто работает
Прервать нормально работающую обработку — значит потерять проделанное. Проверьте три признака:
- 🔹 Нагрузка на сервер. Если процесс
rphost(серверная база) или1cv8(файловая) грузит процессор, обработка считает. Если нагрузки нет, а окно стоит, она, скорее всего, ждёт блокировку. - 🔹 Диск и СУБД. У клиент-серверной базы загляните в монитор активности СУБД: растёт ли число прочитанных строк, есть ли запросы в состоянии ожидания.
- 🔹 Прогресс-индикатор. Многие обработки пишут «Обработано N из M» в строку состояния. Сравните два замера с интервалом в минуту.
Практическое правило: если за 10–15 минут нет ни нагрузки, ни изменения счётчика, обработка не работает , и её можно останавливать.
Остановка прямо из клиента
Это самый мягкий способ, он сохраняет целостность данных, потому что платформа сама завершает текущую операцию.
Ctrl+Break
В толстом клиенте и в тонком клиенте нажмите Ctrl+Break (на ноутбуках часто Fn+Ctrl+Pause). Платформа покажет запрос на прерывание текущей операции. Подтвердите. Прерывание срабатывает на границе вызова серверной процедуры, поэтому ждать реакции иногда нужно до минуты.
Окно «Выполняется длительная операция»
Если появилась форма с кнопкой отмены, жмите её. Для фоновых операций, запущенных из БСП, отмена штатно передаётся в фоновое задание.
Закрытие окна не помогает
Крестиком в углу вы только закрываете форму: серверная часть может продолжать работать. Поэтому после закрытия обязательно проверьте список сеансов (следующий раздел), иначе при повторном запуске получите две копии одной обработки и конфликт блокировок.
Если клиент вообще не реагирует и окно «Не отвечает» — идите сразу к консоли кластера. Клиентская часть уже потеряна, а серверный сеанс жив.
Завершение сеанса в консоли кластера
Для клиент-серверной базы это основной рабочий инструмент. Запустите консоль администрирования серверов 1С (она входит в состав платформы или ставится отдельно) и откройте кластер.
Как найти нужный сеанс
- Раскройте ветку
Центральные серверы 1С:Предприятия→ ваш сервер →Кластеры→ кластер. - Перейдите в
Информационные базы→ нужная база →Сеансы. - Найдите пользователя и приложение. У зависшей обработки обычно большое значение в колонках про время вызова и потреблённое процессорное время.
- Выделите сеанс и посмотрите на текущий вызов: если вызов длится десятки минут, это он.
Что нажимать
- «Завершить сеанс» — штатный сигнал. Дождитесь 1–2 минут.
- «Завершить соединение» в ветке
Соединения— если сеанс не уходит. - «Завершить процесс» (в ветке
Рабочие процессы) — крайняя мера: падает весь рабочий процесс, а с ним сеансы всех, кто на нём сидит. Делайте только вне рабочего времени.
Ту же операцию можно сделать из командной строки через утилиту rac при запущенной службе ras:
rac cluster list
rac session list --cluster=<идентификатор_кластера>
rac session terminate --session=<идентификатор_сеанса> --cluster=<идентификатор_кластера>
Это удобно, когда нужно автоматизировать зачистку «висяков» по расписанию.
Не завершайте процесс rphost у обработки, которая прямо сейчас пишет данные в большой транзакции. Откат и восстановление после аварийного завершения займёт больше времени, чем ожидание.
Файловая база: что делать без консоли кластера
В файловом варианте кластера нет. Остановка идёт по цепочке:
Ctrl+Breakв клиенте, где запущена обработка.- Если окно не отвечает — завершить процесс
1cv8.exeэтого пользователя в диспетчере задач (смотрите по имени пользователя и по тому, какой процесс грузит процессор). - Проверить, что в папке базы не остался файл блокировки
1Cv8.cdn: пока в базе есть живые сеансы, он нужен, а вот при нуле подключений его наличие подскажет, что сеанс завершился некорректно. - Зайти в базу и проверить в списке активных пользователей (
Администрирование→Активные пользователи), что сеанс исчез.
Когда обработку запускали по сети с чужого компьютера, процесс нужно убивать именно там: на вашем компьютере его нет.
Блокировки и журнал регистрации: почему она встала
Перезапускать вслепую бессмысленно: если причина в блокировке, вторая попытка повиснет так же. Определите причину.
Ожидание управляемой блокировки
Обработка пытается заблокировать регистр или документ, который держит другой сеанс. В консоли кластера в карточке сеанса смотрите текущую блокировку и того, кто её держит. Завершите сеанс-владельца (если это забытая сессия) или дождитесь его.
Блокировки на уровне СУБД
Для клиент-серверной базы бывает ситуация, когда сервер 1С ждёт ответа от СУБД, а та — снятия блокировки строки. Признак: в мониторе СУБД виден запрос в состоянии ожидания и цепочка блокирующих сеансов. Решается завершением головного сеанса в цепочке.
Журнал регистрации
Откройте Администрирование → Журнал регистрации (или меню Конфигуратора Администрирование → Журнал регистрации) и настройте отбор:
| Что искать | Как отфильтровать |
|---|---|
| Ошибки в момент зависания | Уровень «Ошибка», период ±15 минут |
| Действия конкретного пользователя | Поле «Пользователь» |
| Тайм-ауты и дедлоки | Событие «Тайм-аут блокировки» / «Взаимная блокировка» в поиске по тексту |
Ищите сообщения вида Превышено максимальное время ожидания блокировки. Их наличие говорит, что проблема — в конкуренции за данные, а не в самой обработке.
Если журнал отключён или в нём мало данных, включите в настройках технологического журнала события TLOCK и TTIMEOUT на время тестового прогона. Файлы журнала быстро растут, поэтому ограничьте период и папку.
Режим Конфигуратора: отладка и запуск из файла
Когда обработка внешняя или вы её дорабатываете, удобнее запускать её из Конфигуратора.
Файл→Открыть→ выберите файл.epf.- Поставьте точку останова (
F9) на строке перед основным циклом. - Запустите отладку (
F5). Платформа откроет клиента и остановится на точке. - Идите по шагам (
F11— с заходом,F10— без захода) и смотрите значения в окнеВычислить выражение(Shift+F9).
Если обработка уже зависла в режиме отладки, нажмите кнопку Прервать на панели отладки — это аналог Ctrl+Break и остановит выполнение на текущей строке, показав, где именно она стоит. Сразу видно, какая процедура или запрос тормозит.
Сам Конфигуратор тоже может занимать лицензию и блокировать монопольный доступ: если база нужна другим, закройте его после отладки.
Фоновые и регламентные задания
Часть обработок запускается не вручную, а регламентным заданием, например «Загрузка курсов валют» или собственная выгрузка. Такая обработка висит в сеансе без пользовательского окна.
Где смотреть:
- 🔹 В программе на БСП — раздел
Администрирование→Обслуживание→Регламентные и фоновые задания. Название и положение пункта зависит от конфигурации; если не нашли, воспользуйтесь поиском по форме. - 🔹 В консоли кластера — сеансы с типом приложения «Фоновое задание».
Что делать:
- Найдите задание со статусом «Выполняется», у которого время старта давно в прошлом.
- Отмените его кнопкой в списке заданий или завершите соответствующий сеанс в консоли кластера.
- Прежде чем запускать заново, проверьте расписание: задание само стартует по таймеру, и вручную вы получите второй экземпляр. Снимите флаг использования на время ручного прогона.
Ctrl+Break, потом завершите сеанс.Как запускать повторно и не повторить зависание
Остановить — половина дела. Второй запуск должен пройти чище первого.
Что проверить до повторного запуска
- ✅ Что осталось от первой попытки: часть документов могла быть уже проведена или изменена. Откройте журнал регистрации и найдите, на каком элементе прервалось.
- ✅ Нет ли оставшихся блокировок и «зависших» сеансов пользователя.
- ✅ Резервная копия базы. Групповые изменения не откатить одним нажатием.
Как сделать запуск надёжнее
| Приём | Зачем |
|---|---|
| Запускать по частям (по периоду, по группе, по 1–5 тысяч элементов) | Короткая транзакция реже упирается в блокировки и тайм-ауты |
| Запускать в нерабочее время | Нет конкуренции с пользователями за регистры |
| Отключить регламентные задания на время прогона | Не будет второго экземпляра и конкуренции за данные |
| Сначала на копии базы | Видно время работы и объём изменений |
| Пересчитать итоги и обновить статистику СУБД перед тяжёлой обработкой | Запросы идут по актуальным планам |
Если обработка своя, а не типовая, ставьте в цикл обработки точку вывода прогресса и записывайте обработанные элементы в журнал. Тогда после падения вы продолжите с места остановки, а не с нуля.
Профилактика: чтобы обработка не вешала базу
Большинство зависаний повторяются по одним и тем же причинам.
- 🔹 Одна огромная транзакция. Цикл на сотни тысяч записей внутри
НачатьТранзакцию()держит блокировки всё время. Дробите на пакеты и фиксируйте после каждого. - 🔹 Запрос в цикле. Выборка на каждой итерации тормозит на порядки. Вынесите запрос за цикл и работайте с таблицей значений.
- 🔹 Нет отбора. Обработка проходит по всей базе, хотя нужен один период. Добавьте параметры отбора.
- 🔹 Нехватка ресурсов. Сервер без свободной памяти уходит в своп, и всё замирает. Следите за оперативной памятью на рабочем процессе.
- 🔹 Устаревшее обслуживание базы. Раз в неделю обновляйте статистику СУБД, раз в месяц проверяйте индексы и размер журналов.
- 🔹 Старая платформа. Часть известных зависаний исправляется в обновлениях платформы; сверьте версию у себя с актуальной на сайте поддержки.
Если зависание повторяется на одной и той же обработке, включайте технологический журнал и замеряйте производительность: стандартные инструменты 1С (Центр контроля технологического журнала, «Замер производительности») покажут медленный запрос или блокировку.