Администрирование · 10 мин
Как прервать поиск в 1С и не потерять данные
Как прервать длительный поиск в 1С: клавиша Esc, Ctrl+Break, остановка через диспетчер задач и консоль кластера. Что делать, если поиск завис и не отвечает.
Длительный поиск в 1С — типичная ситуация при работе с большими справочниками, журналами документов или при отборе без фильтров по базе с миллионами записей. Пользователь запускает поиск, программа «задумывается», и возникает вопрос: можно ли остановить операцию, не дожидаясь её завершения, и чем это грозит.
Способ прерывания зависит от того, где выполняется поиск: в пользовательском интерфейсе, в фоновом задании, в отладчике или на уровне клиент-серверного сеанса. Универсальной кнопки «отмена» в 1С нет — платформа оставляет разработчику возможность обрабатывать прерывание в коде, а пользователю даёт лишь несколько стандартных механизмов.
Прерывание поиска в интерфейсе безопасно: операция чтения данных не изменяет базу, поэтому остановка не приводит к повреждению информации. Риски появляются только при принудительном завершении клиентского приложения через диспетчер задач или при остановке серверных процессов — такие действия могут оборвать сеанс посреди других операций.
Когда поиск в 1С можно прервать, а когда лучше дождаться
Поиск по справочнику, списку документов, полнотекстовый поиск и интерактивный подбор — это операции чтения. Их прерывание не затрагивает данные, поэтому останавливать такой поиск можно без опасений. Худшее, что произойдёт, — незавершённая выборка и необходимость повторить запрос с более точными условиями.
Иная ситуация — если «поиск» на самом деле является частью обработки: например, поиск и удаление дублей, групповая обработка документов, обмен данными, где поиск совмещён с записью. Прерывание такой операции может оставить часть объектов обработанными, а часть — нет. Перед остановкой стоит понять, что именно выполняется.
Признак длительной, но «живой» операции — изменяющийся индикатор прогресса или сообщения в строке состояния. Если индикатор движется, операция идёт, и часто разумнее дождаться завершения, чем прерывать и начинать заново.
Как выбрать действие
Прерывание поиска клавишей Esc
Стандартный способ остановить длительную операцию в обычных формах 1С — нажатие клавиши Esc. В управляемых формах (тонкий клиент, веб-клиент) платформа периодически проверяет нажатие Esc во время выполнения длительных серверных вызовов и отображает кнопку или подсказку «Прервать» рядом с индикатором.
Важно понимать ограничение: Esc срабатывает только если код обработки поддерживает прерывание. Платформа прерывает операцию в контрольных точках, а не мгновенно. Если поиск выполняется одним тяжёлым запросом к СУБД, нажатие Esc не остановит запрос на сервере — клиент «отпустит» ожидание, но запрос продолжит выполняться до своего завершения.
Практический порядок действий: нажмите Esc один раз и подождите 5–10 секунд. Многократные нажатия не ускоряют прерывание. Если индикатор исчез и форма снова реагирует — операция отменена.
- 1Нажмите Esc один раз, пока выполняется поиск
- 2Дождитесь исчезновения индикатора ожидания
- 3Проверьте, что форма снова отвечает на действия
- 4Повторите поиск с более узкими условиями отбора
Прерывание через Ctrl+Break и в конфигураторе
Комбинация Ctrl+Break — традиционный способ прерывания длительных операций в 1С, унаследованный от ранних версий платформы. В обычном приложении она останавливает выполнение встроенного кода. В управляемом приложении её действие ограничено: она работает не во всех клиентских режимах, и надёжнее пользоваться Esc.
Если длительный поиск выполняется в отладке, прервать его можно из конфигуратора: меню «Отладка» → «Остановить» или кнопка остановки на панели. Это завершит отлаживаемый сеанс. Альтернатива — поставить точку останова и остановить выполнение на ближайшей строке кода.
Для разработчика есть программный механизм: метод ОбработкаПрерыванияПользователя() в цикле обработки позволяет платформе корректно реагировать на Esc. Если вы пишете собственную обработку поиска, вызывайте этот метод внутри цикла — иначе пользователь не сможет прервать операцию штатно.
Для Каждого СтрокаРезультата Из РезультатПоиска Цикл
ОбработкаПрерыванияПользователя();
// обработка найденного объекта
КонецЦикла;Что делать, если 1С зависла и не реагирует
Если окно 1С помечено «Не отвечает», а Esc не помогает в течение нескольких минут, остаётся принудительное завершение. В файловом режиме работы это относительно безопасно для операций чтения: откройте диспетчер задач (Ctrl+Shift+Esc), найдите процесс 1cv8.exe и завершите его.
Перед завершением убедитесь, что завис именно ваш сеанс и именно на поиске. Если в этот момент в базе шла запись документов или обмен, принудительное завершение может оставить незавершённую транзакцию. Файловая база при этом обычно откатывает транзакцию автоматически, но риск блокировок и необходимости тестирования и исправления сохраняется.
В клиент-серверном режиме завершать процесс на компьютере пользователя можно — это разорвёт соединение, а сеанс на сервере завершится по таймауту. Но правильнее остановить сеанс на стороне сервера.
Остановка сеанса и фонового задания на сервере 1С
В клиент-серверной архитектуре администратор может прервать длительную операцию централизованно. Откройте консоль кластера серверов 1С, перейдите в раздел «Сеансы», найдите сеанс пользователя и завершите его. Это корректнее, чем «убивать» рабочий процесс rphost целиком — завершение процесса затронет все сеансы, которые он обслуживает.
Если поиск выполняется как фоновое задание (например, длительная обработка, запущенная в фоне), его видно в разделе «Фоновые задания» консоли кластера или в консоли заданий внутри самой конфигурации. Оттуда задание можно отменить, не трогая сеанс пользователя.
Крайняя мера — завершение рабочего процесса rphost, если один «тяжёлый» запрос подвесил весь процесс. Делайте это только когда другие способы исчерпаны, и предупредите пользователей: их сеансы на этом процессе тоже разорвутся.
Как проверить, что прерывание прошло без последствий
После остановки поиска убедитесь, что база работает штатно: списки открываются, документы проводятся, другие пользователи не жалуются на блокировки. В файловом режиме после аварийного завершения при следующем запуске платформа может предложить проверку — не игнорируйте сообщения об ошибках.
Если прерывалась обработка с записью данных, проверьте результат выборочно: сколько объектов успело обработаться, нет ли «полупроведённых» документов. Многие типовые обработки ведут журнал выполнения — сверьтесь с ним.
Как проверить результат
Формы открываются, индикатор ожидания исчез
Окно по-прежнему «Не отвечает» более 5 минут
Коллеги работают без ошибок блокировок
Массовые сообщения о конфликте блокировок
Объекты в ожидаемом состоянии, журнал обработки без ошибок
Часть документов в непонятном статусе
Как избежать ситуаций, когда поиск приходится прерывать
Большинство зависших поисков — следствие слишком широких условий. Всегда задавайте отбор перед поиском: период, организация, часть наименования. Поиск по подстроке «%текст%» без других фильтров по большой таблице — главный источник долгих ожиданий.
Включите и поддерживайте полнотекстовый поиск, если пользователям часто нужно искать по текстовым данным: он работает на порядки быстрее прямого перебора. Следите за актуальностью индекса полнотекстового поиска — устаревший индекс даёт неполные результаты.
На уровне администрирования помогают регламентное обновление статистики на СУБД, контроль тяжёлых запросов через технологический журнал и ограничение прав на запуск массовых обработок в рабочее время.
Частые вопросы
Повредит ли базу прерывание поиска клавишей Esc?
Нет. Поиск — операция чтения, она не изменяет данные. Esc лишь останавливает ожидание результата на клиенте. Риск повреждения существует только при принудительном завершении процесса во время операций записи.
Esc не работает, поиск продолжается. Почему?
Esc срабатывает только в контрольных точках, которые предусмотрела платформа или разработчик обработки. Если выполняется один тяжёлый запрос к СУБД, прервать его с клиента нельзя — дождитесь завершения либо попросите администратора остановить запрос на сервере.
Как прервать фоновое задание поиска, запущенное другим пользователем?
Через консоль кластера серверов 1С: раздел «Фоновые задания» или «Сеансы» — найдите задание и отмените его. Из пользовательского режима это доступно через консоль заданий, если она есть в конфигурации и у вас есть права администратора.
Что произойдёт с данными, если завершить 1С через диспетчер задач?
Незавершённая транзакция будет откачена СУБД или платформой — данные останутся в согласованном состоянии. Однако могут остаться блокировки сеанса на сервере, которые снимутся по таймауту, а при файловом режиме в редких случаях потребуется тестирование и исправление базы.
Как разработчику сделать свою обработку прерываемой?
Добавьте вызов ОбработкаПрерыванияПользователя() внутрь цикла обработки данных. Тогда нажатие Esc корректно остановит выполнение. Дополнительно полезно выводить индикатор прогресса, чтобы пользователь видел, что операция идёт.
Полнотекстовый поиск тоже можно прервать?
Да, как и любую операцию чтения — клавишей Esc на клиенте. Но на практике полнотекстовый поиск при актуальном индексе выполняется быстро, и необходимость прерывать его возникает редко.
Что важно запомнить
Поиск в 1С прерывается клавишей Esc, при зависании — завершением сеанса через диспетчер задач или консоль кластера. Операции чтения останавливать безопасно, обработки с записью — только с проверкой результата. Лучшая профилактика — узкие условия отбора и актуальный индекс полнотекстового поиска.