Что делать, если база 1С:Бухгалтерия 3.0 зависает при поиске контрагента в документах и попытке открыть настройки?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

В практической работе администраторов и разработчиков систем на платформе 1С:Предприятие 8.3 нередко возникает крайне неприятная ситуация. Пользователи начинают жаловаться, что при попытке выбрать контрагента в любом документе (например, при вводе первых букв названия в поле ввода) программа намертво зависает. Пытаясь разобраться в ситуации, администратор пытается открыть форму «Администрирование — Общие настройки» или стандартную обработку «Управление полнотекстовым поиском» через меню «Все функции» (или «Функции для технического специалиста»), но база данных зависает и на этом этапе.

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

Выясняем причину: как связаны поиск контрагента и зависание настроек?

Для начала проанализируем внутренние механизмы платформы 1С. В современных конфигурациях, таких как 1С:Бухгалтерия предприятия 3.0, для быстрого подбора данных при вводе текста в полях документов (механизм «ввод по строке») активно используется Полнотекстовый поиск данных (ППД). Это позволяет мгновенно находить контрагентов, номенклатуру или договоры по части наименования, ИНН или другим реквизитам.

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

Аналогичный процесс происходит и при попытке открыть разделы настроек. При входе в Общие настройки или форму Управление полнотекстовым поиском, система опрашивает файлы индекса на сервере, чтобы рассчитать их текущий размер, определить дату последнего обновления и актуальность данных. Если индекс поврежден, этот опрос вызывает взаимоблокировку (deadlock) рабочего процесса сервера приложений rphost, и интерфейс администратора точно так же зависает.

Дополнительным фактором часто выступает официально зарегистрированная ошибка платформы 1С с кодом 10212437: «При обращении к устаревшему индексу полнотекстового поиска может происходить зависание программы». Данная проблема особенно часто проявляется на релизах платформы линеек 8.3.16, 8.3.24, 8.3.25 и некоторых других версиях.

---

Метод 1. Программное отключение и обновление индекса (если удается открыть настройки)

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

Рассмотрим вариант аварийного программного отключения ППД с помощью внешней обработки. Нам понадобится написать простой код, который принудительно отключит использование полнотекстового поиска в обход графического интерфейса настроек. Это позволит вернуть работоспособность поиску по строке и зайти в меню администрирования.

Создадим внешнюю обработку и пропишем в модуле следующую процедуру:


Процедура ОтключитьПолнотекстовыйПоискНаСервере() Экспорт
    УстановитьПривилегированныйРежим(Истина);
    
    Если ПолнотекстовыйПоиск.ПолучитьИспользование() Тогда
        ПолнотекстовыйПоиск.УстановитьИспользование(Ложь);
        ЗаписьЖурналаРегистрации("ППД", УровеньЖурналаРегистрации.Информация, , , "Полнотекстовый поиск успешно отключен программно.");
        Сообщить("Использование полнотекстового поиска отключено. Теперь вы можете зайти в настройки.");
    Иначе
        Сообщить("Полнотекстовый поиск уже был отключен.");
    КонецЕсли;
КонецПроцедуры

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

  1. Включите использование поиска обратно (в форме настроек или аналогичным кодом, передав значение Истина в метод УстановитьИспользование()).
  2. Нажмите кнопку «Очистить индекс».
  3. После завершения очистки нажмите кнопку «Обновить индекс» для его создания с нуля.

---

Метод 2. Физическое удаление файлов индекса на сервере (самый надежный способ)

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

Разберем этот процесс по шагам для серверного варианта базы данных:

  1. Запустите утилиту администрирования кластера серверов 1С и завершите все активные сеансы пользователей в проблемной базе данных.
  2. Откройте оснастку управления службами Windows (services.msc) или используйте командную строку и остановите службу «Агент сервера 1С:Предприятия 8.3» (1C:Enterprise 8.3 Server Agent).
  3. Перейдите в каталог кластера серверов 1С на диске. По умолчанию в Windows он находится по пути:
    C:\Program Files\1cv8\srvinfo\ (или C:\Program Files (x86)\1cv8\srvinfo\).
  4. Перейдите в папку конкретного рабочего локального кластера (обычно она называется reg_1541), а затем найдите каталог с уникальным идентификатором (GUID) вашей информационной базы. Вы можете узнать этот GUID в свойствах базы в консоли администрирования 1С.
  5. Внутри папки базы данных найдите каталог с именем 1Cv8FTxt. Именно здесь физически хранятся все файлы полнотекстового индекса.
  6. Полностью удалите папку 1Cv8FTxt или переместите её содержимое в архив в качестве резервной копии.
  7. Запустите службу «Агент сервера 1С:Предприятия 8.3».

После запуска службы и входа первого пользователя система обнаружит отсутствие файлов индекса и автоматически создаст чистую пустую папку 1Cv8FTxt. Опрашивать при входе в настройки будет нечего, поэтому формы Общие настройки и Управление полнотекстовым поиском откроются мгновенно. После этого вам останется лишь запустить полное обновление индекса в интерфейсе программы.

---

Метод 3. Проверка регламентных заданий и очистка серверного кэша

Иногда повреждение индекса ППД является лишь следствием сбоя в работе фоновых процессов сервера 1С или СУБД. Выясним, какие еще сопутствующие действия необходимо выполнить для предотвращения повторных зависаний:

Применяя описанные методы в комплексе, мы сможем оперативно диагностировать и полностью устранить зависания базы данных 1С:Бухгалтерия 3.0, обеспечив быструю и комфортную работу пользователей с поиском документов и справочников.

← На главную