Глобальный поиск в 1С завис: как его остановить и больше не ждать

· 9 мин

Содержание

Прервать глобальный поиск в 1С проще всего сочетанием Ctrl+Break: платформа спросит, прервать ли выполнение, и вернёт управление программой. Если окно не реагирует минуту и дольше, поиск застрял на сервере. Тогда администратор завершает сеанс пользователя в консоли кластера серверов, а в файловой базе остаётся только закрыть процесс клиента.

Механизм общий для платформы 8.3 с интерфейсом «Такси»: в Бухгалтерии 3.0, ЗУП 3.1, УТ 11 поле поиска одно и то же, вверху окна программы. Поэтому и способы остановить поиск, и причины зависания совпадают. Чаще всего виноват не сам поиск, а устаревший или битый полнотекстовый индекс, слишком короткая фраза или тяжёлый запрос к СУБД.

Остановить поиск, не выходя из программы

Начинайте с мягких способов. Они не трогают других пользователей и не требуют прав администратора.

Сочетание Ctrl+Break

  1. Не кликайте по окну много раз подряд: каждый клик встаёт в очередь и продлевает «зависание».
  2. Нажмите Ctrl+Break. На ноутбуках без отдельной клавиши Break она вызывается через Fn; какое именно сочетание, указано в документации к ноутбуку. Запасной вариант — экранная клавиатура Windows, где Break есть.
  3. В вопросе «Прервать выполнение?» ответьте «Да».
  4. Закройте окно результатов поиска и сформулируйте запрос заново, точнее.

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

Закрыть окно результатов и подождать

Глобальный поиск выдаёт результаты порциями: сначала команды и разделы интерфейса, затем найденные данные и справку. Если первые строки уже появились, а остальное ищется долго, закройте окно результатов. Новый поиск начнётся только по вашей команде.

В веб-клиенте Ctrl+Break обычно перехватывает браузер. Там надёжнее закрыть вкладку и открыть базу заново: незавершённый вызов на сервере доработает и освободится сам.

Когда закрывать программу через диспетчер задач

Если окно «Не отвечает» больше 5–10 минут, а администратора рядом нет, закройте процесс 1cv8c.exe (тонкий клиент) или 1cv8.exe (толстый) в диспетчере задач.

Несохранённые документы в этом сеансе пропадут. В клиент-серверной базе сеанс на сервере после этого ещё какое-то время висит и держит лицензию, пока сервер не обнаружит разрыв соединения.

Почему глобальный поиск в 1С зависает

Понять причину важно: от неё зависит, поможет ли повторный запуск или поиск снова встанет на том же месте.

  • 📚 Индекс полнотекстового поиска давно не обновлялся. Платформа ищет по устаревшему индексу и параллельно пытается досчитать свежие данные.
  • 🔤 Слишком общий запрос. Фраза из 2–3 букв или частое слово вроде «ООО» даёт десятки тысяч совпадений, и формирование списка результатов занимает минуты.
  • 🧩 Повреждён индекс. Сбой при слиянии, нехватка места на диске или антивирус, заблокировавший файлы индекса, — и поиск начинает падать с ошибкой или висеть.
  • 🗄 Блокировки и тяжёлые запросы в СУБД. Поиск по данным упирается в таблицы, которые в эту минуту держит закрытие месяца или обмен.
  • 🖥 Нехватка ресурсов сервера. Рабочий процесс уже занят тяжёлыми отчётами, памяти не хватает, процессор загружен на 100%.

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

Пример из практики. В базе на 40 ГБ бухгалтер ищет «счёт» и ждёт по 4 минуты. В консоли кластера видно: вызов почти всё время проводит в СУБД, блокировок нет. Запрос «счёт 1452» по номеру документа отрабатывает за 2 секунды. Причина — сама формулировка: слово встречается почти в каждом документе. Индекс тут ни при чём, перестраивать его не нужно.

Найти и завершить зависший сеанс в консоли кластера

Для клиент-серверной базы это главный способ, когда Ctrl+Break не помог. Делает его администратор сервера 1С.

  1. Запустите «Администрирование серверов 1С Предприятия» (оснастка консоли кластера).
  2. Разверните Кластеры → <ваш кластер> → Информационные базы → <база> → Сеансы.
  3. Найдите сеанс нужного пользователя по колонке «Пользователь» и компьютеру.
  4. Посмотрите колонки с длительностью текущего вызова и текущего обращения к СУБД. Если вызов длится минутами, а время в СУБД растёт вместе с ним — сеанс ждёт базу данных.
  5. Выделите сеанс и выберите в контекстном меню «Удалить».

Пользователь увидит сообщение Сеанс работы завершен администратором и сможет войти заново.

Удаление сеанса обрывает всю работу этого пользователя, а не только поиск. Несохранённые документы пропадут. Сначала позвоните ему и предложите сохранить то, что открыто в других окнах.

То же самое из командной строки

Если консоли под рукой нет, тот же результат даёт утилита rac при запущенной службе ras:

rac cluster list
rac session list --cluster=<uuid_кластера>
rac session terminate --cluster=<uuid_кластера> --session=<uuid_сеанса>

В списке сеансов ищите нужного пользователя по полям user-name и host. Если кластер защищён паролем, добавьте параметры администратора кластера; их точный вид подскажет rac help session.

Чего не делать

Не перезапускайте службу сервера 1С и не завершайте рабочий процесс rphost ради одного зависшего поиска. Это оборвёт сеансы всех пользователей на этом процессе. Такой шаг оправдан только если завис весь сервер, и его делают вне рабочего времени или после предупреждения всех пользователей.

Полнотекстовый индекс и скорость поиска

Поиск по данным в глобальном поиске опирается на полнотекстовый индекс. Это отдельный набор файлов: в файловой базе — папка 1Cv8FTxt в каталоге базы, в клиент-серверной — в каталоге кластера, обычно srvinfo\reg_1541\<GUID базы>\1Cv8FTxt.

Индекс устроен из основной части и небольшой «дополнительной», куда попадают свежие изменения. Пока дополнительная часть маленькая, поиск быстрый. Если слияние неделями не запускалось, она разрастается, и каждый поиск становится медленнее.

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

В Бухгалтерии 3.0 и других конфигурациях на библиотеке стандартных подсистем откройте Администрирование → Общие настройки и найдите группу «Полнотекстовый поиск». Там видно, включён ли поиск и актуален ли индекс.

ДействиеКогда применятьРиск
Обновить индексИндекс не актуален, новые документы не находятсяНагрузка на процессор на время обновления
Очистить и построить зановоПоиск падает с ошибкой или висит на любом запросеПока индекс строится, поиск по данным не работает; большая база индексируется часами
Временно отключить полнотекстовый поискПоиск мешает работе, а перестроить индекс сейчас некогдаГлобальный поиск перестанет находить документы по содержимому

Перестройку индекса большой базы запускайте вечером. Первое построение базы на 50 ГБ может идти несколько часов и занимать одно ядро процессора целиком.

Перед перестройкой проверьте, что на диске есть свободное место примерно на треть объёма базы, а папка 1Cv8FTxt исключена из проверки антивирусом «на лету». Иначе новый индекс повредится так же, как старый.

Что смотреть в СУБД, когда поиск висит

Если в консоли кластера видно, что вызов сеанса проводит почти всё время в СУБД, проверьте, чем занята база данных. Это работа администратора баз данных или того, у кого есть права на сервер СУБД.

Microsoft SQL Server. Текущие запросы и их ожидания показывает системное представление:

SELECT r.session_id, r.status, r.wait_type, r.blocking_session_id,
       r.total_elapsed_time / 1000 AS seconds, t.text
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE r.session_id <> @@SPID
ORDER BY r.total_elapsed_time DESC;

PostgreSQL. Аналог — pg_stat_activity:

SELECT pid, state, wait_event_type, wait_event,
       now() - query_start AS duration, left(query, 200) AS query
FROM pg_stat_activity
WHERE state <> 'idle'
ORDER BY duration DESC;

Как читать результат:

  • 🔒 Заполнен blocking_session_id (SQL Server) или ожидание типа Lock (PostgreSQL) — запрос поиска стоит в очереди за чужой блокировкой. Найдите блокирующий процесс: часто это закрытие месяца, обмен или выгрузка.
  • 🐢 Блокировок нет, но запрос идёт долго и читает много данных — поиск перебирает большие таблицы. Помогает уточнить фразу и обновить статистику СУБД в регламентном обслуживании.
  • 🔁 Один и тот же запрос повторяется от нескольких пользователей — люди нажимают поиск повторно, не дождавшись первого. Объясните, что так очередь только растёт.

Не завершайте процессы в СУБД напрямую (KILL в SQL Server, pg_terminate_backend в PostgreSQL) без крайней нужды. Рабочий процесс 1С получит ошибку соединения, и у пользователя оборвётся сеанс. Правильный путь — завершить сеанс в консоли кластера.

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

Большая часть «зависаний» — это поиск, которому дали слишком широкое задание. Несколько привычек снимают проблему без участия администратора.

  • 🎯 Ищите по уникальному признаку. ИНН, номер документа, артикул находятся за секунды. Слово «услуги» в базе за 5 лет — нет.
  • ✍️ Пишите не меньше 4–5 символов. Короткая подстрока совпадает с огромным числом записей.
  • 📂 Ищите в нужном списке, а не во всей базе. Если нужен контрагент, откройте справочник «Контрагенты» и воспользуйтесь строкой поиска списка (Ctrl+F). Поиск пройдёт по одной таблице.
  • 🗓 В журналах документов сначала ограничьте период. Поиск по журналу за месяц быстрее, чем за всю историю.

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

Диагностика: выберите симптом

Регламентные задания: профилактика зависаний

Чтобы поиск не тормозил снова, индекс должен обновляться и сливаться автоматически. В конфигурациях на библиотеке стандартных подсистем это делают два регламентных задания.

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

Проверка заданий полнотекстового поиска
Выполнено: 0 / 5

Ещё три практических правила:

  • 🌙 Слияние — ночью. Слияние индекса нагружает процессор и диск. Если оно запускается в 11:00, пользователи заметят это как «тормоза поиска».
  • 🚫 Проверьте флажок блокировки заданий. В свойствах информационной базы в консоли кластера есть «Блокировка регламентных заданий включена». После обновления или копирования базы его часто забывают снять, и индекс перестаёт обновляться.
  • 📏 Следите за размером индекса. Если папка 1Cv8FTxt за месяц выросла в разы при обычной работе, задания слияния не отрабатывают.

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

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

Можно ли прервать чужой глобальный поиск, не выкидывая пользователя из базы?
Нет. Из консоли кластера сеанс завершается целиком. Прервать только текущую операцию может сам пользователь через Ctrl+Break.
Почему после Ctrl+Break программа ещё несколько минут не отвечает?
Прерывание дошло, но сервер ждёт ответа от СУБД. Управление вернётся, когда запрос к базе завершится. Повторные нажатия не ускоряют процесс.
Отключение полнотекстового поиска сломает глобальный поиск?
Нет. Поиск по командам, разделам и справке продолжит работать. Перестанет находиться только содержимое документов и справочников по индексу.
Сколько ждать, прежде чем завершать сеанс?
Ориентир — 5–10 минут без признаков работы. Если в консоли кластера время вызова в СУБД продолжает расти, а блокировок нет, запрос может завершиться сам.
Влияет ли зависший поиск на других пользователей?
Да, если запрос держит блокировки или грузит рабочий процесс. Остальные увидят замедление проведения и отчётов, пока сеанс не освободится.