Многие системные администраторы и программисты 1С сталкиваются с неприятной ситуацией: после планового обновления платформы до версий 8.3.12, 8.3.13 или выше пользователи начинают жаловаться на некорректную работу поиска. Типичный симптом: поиск по одной или двум буквам выдает результаты, но как только пользователь вводит третий символ, список становится пустым, и система сообщает, что данных не обнаружено. Рассмотрим подробно, почему это происходит, и проанализируем пошаговые инструкции по восстановлению работоспособности системы.
Начиная с версии 8.3.12, компания «1С» существенно переработала внутренние механизмы поиска в динамических списках. Проанализируем ситуацию: раньше поиск работал как простой SQL-фильтр (подобно оператору LIKE). Теперь же система пытается использовать более сложные алгоритмы, напоминающие полнотекстовый поиск, даже если он явно не включен. Выясним причину "порога трех символов": дело в том, что при вводе первых двух знаков система фильтрует данные по началу строки, а при вводе третьего — переключается на поиск по подстроке с использованием внутренних индексов. Если эти индексы повреждены или не актуальны, поиск «ломается».
Первым делом проверим состояние полнотекстового поиска. Часто проблема кроется именно в рассинхронизации индекса после обновления конфигурации или платформы. Выполним следующие действия:
Разберем важный нюанс для файловых баз: иногда программная очистка через интерфейс не дает результата из-за блокировок файлов на уровне ОС. В этом случае закроем все сеансы пользователей и физически удалим содержимое папки 1Cv8FTxt, которая находится в каталоге базы данных. После этого запустим 1С и заново создадим индекс в меню управления поиском.
Как показывает практика и сообщения пользователей, стандартная процедура Тестирования и исправления часто оказывается самым эффективным средством. Рассмотрим подробнее, какие именно опции нам помогут:
Запустим базу в режиме Конфигуратор, перейдем в меню Администрирование — Тестирование и исправление. Установим следующие флаги:
.1CD.После завершения процедуры ТИИ во многих случаях поиск по трем и более буквам начинает работать корректно, так как восстанавливаются связи в индексах, на которые опирается новый механизм платформы.
Проанализируем техническую ошибку, официально зарегистрированную разработчиками 1С. В версиях 8.3.12 и 8.3.13 существовал баг: если колонка в списке (например, "Контрагент") имеет составной тип данных или тип ОпределяемыйТип, поиск по подстроке мог не работать вовсе. Это происходило из-за некорректного построения внутреннего запроса платформой при обращении к нескольким таблицам сразу.
Выясним способы устранения этой проблемы:
Иногда корень зла кроется не в самой базе, а в локальных файлах на компьютере пользователя. Рассмотрим ситуацию: при обновлении платформы кэш метаданных и настроек динамических списков может содержать устаревшие структуры, которые конфликтуют с новыми алгоритмами поиска.
Разберем шаги по очистке кэша:
%AppData%\1C\1Cv8 и %LocalAppData%\1C\1Cv8.Обратим внимание на системные требования. Если ваша база работает на Windows Server 2003 или Windows XP (как упоминалось в исходной теме), новые версии платформы могут работать нестабильно. Это связано с использованием библиотек Visual C++, которые в старых ОС могут отрабатывать некорректно. В таких случаях фоновые задания, отвечающие за индексацию, "тихо" аварийно завершаются.
Посмотрим на пример того, как можно проверить работу фоновых заданий программно:
Менеджер = ФоновыеЗадания.ПолучитьФоновыеЗадания();
Для Каждого Задание Из Менеджер Цикл
Если Задание.ИмяМетода = "ПолнотекстовыйПоискОбновлениеИндекса" Тогда
Сообщить("Задание: " + Задание.Состояние);
КонецЕсли;
КонецЦикла;
Если вы видите состояние ЗавершеноАварийно, это явный сигнал к тому, что поиск в списках не будет актуальным, пока не будут устранены системные проблемы или не будет произведен апгрейд ОС.
Если проблему не удается решить оперативно, а бухгалтерам нужно работать "здесь и сейчас", обучим их использовать Расширенный поиск. Вместо набора текста в шапке списка, следует нажать комбинацию клавиш Ctrl + F. Откроется классическое окно поиска. В нем можно принудительно указать поиск по конкретной колонке и метод "По началу строки" или "По части строки". Этот механизм работает более прямолинейно и часто спасает в ситуациях, когда "интеллектуальный" поиск платформы дает сбой.
Подводя итог, скажем: проблема поиска в 1С 8.3.12+ — это комплексная ошибка, связанная с переходом на новые алгоритмы индексации. Комплексное применение ТИИ, очистки индекса ППД и последующее обновление платформы до стабильных релизов (ветка 8.3.14 и выше) гарантированно решает этот вопрос.