Что делать, если поиск в конфигураторе 1С 8.3 завис

· 9 мин

Содержание

Частый миф: что запущенный в конфигураторе поиск «вешает базу» и выкидывает всех пользователей. Это не так. Глобальный поиск и поиск ссылок на объект только читают конфигурацию, монопольный доступ им не нужен — остальные спокойно продолжают работать в «Предприятии». Прервать сам поиск можно штатно: в окне хода поиска нажмите кнопку отмены или Esc, а панель «Результаты поиска» внизу экрана просто закройте.

Другое дело, если конфигуратор перестал отвечать совсем. Тогда есть два варианта: либо он всё ещё ищет (поиск ссылок по большой типовой конфигурации идёт минутами), либо действительно завис. Ниже — как отличить одно от другого и как безопасно завершить процесс 1cv8.exe, не повредив базу и не потеряв правки в модулях.

Почему поиск подвисает и какой он бывает

В конфигураторе 8.3 два разных поиска, и ведут они себя по-разному.

  • 🔎 Глобальный поиск — ищет строку по текстам всей конфигурации (модули, формы, макеты, свойства объектов). Вызывается из главного меню Правка → Глобальный поиск.
  • 🔗 Поиск ссылок на объект — показывает, где используется конкретный справочник, документ, реквизит. Вызывается из контекстного меню объекта в дереве конфигурации командой Поиск ссылок на объект.

Второй тяжелее. Чтобы собрать все ссылки, платформа перебирает метаданные целиком, и на типовой «Бухгалтерии предприятия» или ЗУП с тысячами объектов это занимает заметное время. Само по себе это не зависание.

Отдельно стоит поиск внутри одного модуля по Ctrl+F — он работает по открытому тексту, срабатывает мгновенно и зависнуть не может. Проблемы бывают именно с двумя «тяжёлыми» видами поиска по всей конфигурации:

Вид поискаГде ищетСкоростьКак прервать
В тексте модуля (Ctrl+F)Открытый модульМгновенноЗакрыть панель, Esc
Глобальный поискВсе тексты конфигурацииСекунды-минутыEsc, кнопка отмены
Поиск ссылок на объектВсе метаданныеМинуты на крупной базеEsc, кнопка отмены

Если тормозит Ctrl+F — дело не в поиске, а в самом конфигураторе или машине. Прерывать в этом случае нечего.

Отчего поиск действительно затягивается или замирает:

  • 📂 Файловая база на сетевом диске. Чтение конфигурации идёт по сети — медленно и с рывками. Самая частая причина «вечного» поиска.
  • 🐢 Короткая строка поиска. Поиск одной-двух букв даёт тысячи совпадений, и заполнение результатов тормозит интерфейс.
  • 🛡️ Антивирус проверяет обращения к файлу базы и к временным файлам платформы.
  • 💾 Нехватка оперативной памяти — конфигуратор уходит в своп.
  • ⏳ Фоновая операция. Если параллельно идёт сравнение/объединение или обновление, поиск ждёт.

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

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

Как остановить поиск штатными средствами

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

  1. В окне хода поиска нажмите кнопку отмены или клавишу Esc. Платформа прервёт операцию и вернёт управление.
  2. Если результаты уже выводятся в панель «Результаты поиска» внизу экрана — закройте эту панель крестиком. Наполнение прекратится.
  3. Если окна хода нет, а индикатор в строке состояния ещё движется — дождитесь конца этапа и нажмите Esc; реакция появится в паузе между порциями данных.

Отмена не откатывает уже найденное: то, что успело попасть в «Результаты поиска», останется в панели. Это удобно — иногда нужное вхождение уже в списке, и ждать полный проход незачем. Прервали, посмотрели верхние результаты, перешли к объекту двойным щелчком по строке.

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

У глобального поиска есть параметры, которые заметно сужают выборку и ускоряют вывод: «учитывать регистр», «слово целиком», а также выбор, где искать — в текстах модулей, в свойствах объектов, в макетах. Чем уже область и строже условие, тем короче список совпадений и тем реже поиск подвисает на выводе результатов. Если вы раз за разом отменяете «утонувший» поиск, первым делом ужесточите эти условия, а не ищите кнопку остановки.

Не торопитесь снимать процесс при первом же замирании курсора. Поиск ссылок по большой конфигурации может «молчать» минуту-две — это ещё не зависание. Сначала убедитесь, что он действительно встал (см. следующий раздел), и лишь потом завершайте.

Если конфигуратор завис: завершаем процесс

Когда Esc не помогает, окно побелело и в заголовке висит «Не отвечает» — нужно понять, завис процесс или просто занят.

Откройте диспетчер задач (Ctrl+Shift+Esc), вкладка «Процессы», и посмотрите на 1cv8.exe:

  • если процесс грузит процессор (несколько процентов CPU то растёт, то падает) — он работает, поиск идёт, снимать рано;
  • если нагрузка нулевая несколько минут подряд, а окно не откликается — конфигуратор завис, можно завершать.

Для завершения выделите 1cv8.exe (в подробностях у него будет видно, что это конфигуратор нужной базы) и нажмите «Снять задачу».

Снятие процесса закрывает конфигуратор аварийно. Несохранённые правки в модулях, формах и макетах пропадут — платформа не успеет их записать. Поэтому до жёсткого завершения, если окно хоть немного отзывается, попробуйте сохранить (Ctrl+S).

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

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

В клиент-серверном варианте снятый на клиенте конфигуратор может оставить «висящий» сеанс в кластере. Клиент конфигуратора снят, а сеанс на сервере ещё числится активным и может держать объекты. Посмотреть и завершить сеансы можно через консоль администрирования серверов либо утилитой rac: список сеансов выводит rac session list (полный перечень команд — rac help). Найдите в списке свой сеанс конфигуратора по имени пользователя и приложению и завершите его. Как правило, кластер и сам закрывает такие сеансы по тайм-ауту, так что торопиться с ручным снятием не обязательно.

Что проверить после аварийного завершения

Раз поиск работает только на чтение, после снятия процесса конфигурация и база остаются целыми. Специальной «починки» не требуется, но пара проверок не помешает.

  • 🔁 Откройте базу заново в конфигураторе. Если открылась и дерево конфигурации на месте — всё в порядке.
  • ✍️ Проверьте последние правки. Всё, что вы меняли после предыдущего сохранения, потеряно — сверьтесь с тем, что помните, и внесите заново.
  • 🔒 Файловая база: убедитесь, что рядом с 1Cv8.1CD не остался чужой блокирующий сеанс. Если база «занята», но все вышли — закройте все клиенты и откройте снова.
  • 🖥️ Клиент-серверная база: проверьте, не остался ли ваш сеанс конфигуратора в списке сеансов кластера, и при необходимости завершите его.

Анализировать технологический журнал или журнал регистрации тут обычно незачем: операции поиска в журнал регистрации не попадают, а техножурнал ведётся, только если вы его специально включили через logcfg.xml. Для разовой ситуации с зависшим поиском это лишнее.

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

Проще предотвратить зависание, чем прерывать. Несколько приёмов, которые реально ускоряют поиск по типовым конфигурациям.

  • 📍 Сужайте область. Перед глобальным поиском выделите в дереве нужную ветку (конкретную подсистему, документ, общий модуль) — платформа ищет в пределах выделенного, а не по всей конфигурации.
  • ✏️ Задавайте точную строку. Ищите осмысленный фрагмент (имя процедуры, реквизита), а не две буквы. Чем длиннее и уникальнее строка, тем меньше совпадений и быстрее вывод.
  • 💻 Работайте с локальной базой. Файловую базу с сетевой папки скопируйте на локальный диск и ищите в копии — это убирает главный тормоз.
  • 🧹 Освободите память. Закройте лишние приложения и вторые окна конфигуратора; при нехватке RAM поиск по большой конфигурации уходит в своп.
  • 🛡️ Добавьте исключения в антивирус для каталога базы и каталога временных файлов платформы — проверка каждого обращения заметно замедляет чтение.
  • 🧾 Чистите панель результатов. «Результаты поиска» копят вхождения от нескольких запросов подряд. Когда там накапливаются сотни строк, перерисовка панели тормозит интерфейс и создаёт ощущение зависания. Закрывайте панель перед новым большим поиском.

Поиск ссылок на объект почти всегда быстрее глобального текстового поиска, когда задача — найти использование конкретного объекта. Начинайте с него, а не с поиска строки по всей конфигурации.

Чем ещё искать код, кроме встроенного поиска

Если встроенный поиск стабильно упирается в размер конфигурации, его можно обойти.

  • 📤 Выгрузка конфигурации в файлы. Команда Конфигурация → Выгрузить конфигурацию в файлы сохраняет модули и формы как обычные текстовые файлы на диск. По ним ищет любой внешний редактор или файловый поиск — быстро и без нагрузки на платформу. Это удобно для разового поиска по коду «грепом».
  • 🧰 1C:EDT — отдельная среда разработки на базе Eclipse. Поиск по проекту в ней работает по индексу и на больших конфигурациях ощущается шустрее встроенного. Подходит тем, кто уже ведёт разработку в EDT.
  • 🔗 Точечный поиск ссылок вместо глобального — когда нужно понять, где используется объект, команда Поиск ссылок на объект даёт готовый результат без перебора всех текстов.

У выгрузки в файлы есть приятный побочный эффект: по текстам можно искать сложные шаблоны — регулярными выражениями, с учётом структуры кода, по нескольким условиям сразу. Встроенный глобальный поиск так не умеет. А после правок конфигурацию можно загрузить обратно командой Конфигурация → Загрузить конфигурацию из файлов.

Выбор зависит от задачи: разово найти строку в коде — проще выгрузить конфигурацию в файлы; постоянно разрабатывать с быстрым поиском — смотреть в сторону EDT; понять использование одного объекта — встроенный поиск ссылок.

Поиск в конфигураторе блокирует работу пользователей?
Нет. Глобальный поиск и поиск ссылок только читают конфигурацию, монопольный доступ им не нужен. Пользователи продолжают работать в «Предприятии».
Можно ли прервать поиск ссылок, не закрывая конфигуратор?
Да. Нажмите отмену в окне хода поиска или Esc. Конфигуратор остаётся открытым, база — на месте, можно сразу запустить новый поиск.
Потеряю ли я конфигурацию, если сниму 1cv8.exe во время поиска?
Нет. Поиск ничего не записывает, поэтому база и конфигурация не пострадают. Пропадут только несохранённые правки в модулях и формах, если вы их не записали до завершения.
Как понять, что конфигуратор завис, а не ищет?
Откройте диспетчер задач. Если 1cv8.exe грузит процессор — поиск идёт, подождите. Если нагрузка нулевая несколько минут, а окно не отвечает — завис, можно снимать задачу.
Есть ли горячая клавиша, чтобы остановить поиск?
Штатно — Esc в окне хода поиска. Отдельной «аварийной» клавиши для зависшего конфигуратора нет: в этом случае процесс завершают через диспетчер задач.