Почему не отображаются контрагенты в списке 1С:УНФ при использовании поиска?

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

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

Анализ проблемы: Динамический список или Полнотекстовый поиск?

Первым делом проанализируем поведение системы. Если контрагент находитcя через поле ввода в документе (по строке), это означает, что объект существует в таблицах базы данных и программные механизмы выбора работают корректно. Однако, если при открытии списка справочника Контрагенты часть записей отсутствует, необходимо выяснить, какой именно механизм поиска используется в данный момент.

Разберем ситуацию автора: при использовании обычного отбора данные видны, но при использовании Ctrl+F (полнотекстовый поиск) — нет. В современных версиях УНФ поиск в списках по умолчанию настроен на работу через механизм полнотекстового поиска (ППС). Если индекс этого поиска не актуален или поврежден, система просто «не знает», что в базе появились новые записи, и не выводит их в результат.

Причина 1: Индексация при массовой загрузке

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

Рассмотрим по шагам, как исправить состояние индекса стандартными средствами:

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

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

Причина 2: Особенности файлового режима работы

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

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

Причина 3: Физическое повреждение файлов индекса

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

  1. Полностью завершим работу всех пользователей в базе 1С.
  2. Зайдем в каталог, где физически расположена база данных.
  3. Найдем папку с именем 1Cv8FTxt. Это каталог, в котором хранятся данные полнотекстового поиска.
  4. Удалим всё содержимое этой папки. Саму папку можно оставить.
  5. Запустим базу в режиме «Предприятие» и снова выполним команду Создать индекс в управлении полнотекстовым поиском.

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

Программный контроль индексации

Если вы являетесь разработчиком и хотите избежать подобных проблем в будущем при написании обработок загрузки, рассмотрим вариант принудительного вызова обновления индекса в коде. Хотя злоупотреблять этим не стоит из-за нагрузки на систему, в конце процедуры загрузки можно вызвать:


ПолнотекстовыйПоиск.ОбновитьИндекс(Ложь, Истина);
// Первый параметр - Немедленно (False для фонового режима)
// Второй параметр - Порция (True для частичного обновления)

Это позволит инициировать процесс обработки новых данных сразу после завершения загрузки.

Дополнительные проверки метаданных

Если перестроение индекса не помогло, разберем ситуацию на уровне Конфигуратора. Проверим свойства справочника Контрагенты:

Подводя итог, в большинстве случаев проблема «невидимости» контрагентов в УНФ после загрузки решается именно через полный сброс индекса полнотекстового поиска и удаление содержимого папки 1Cv8FTxt. Это стандартная процедура обслуживания базы данных, которую рекомендуется проводить при возникновении расхождений между реальными данными и результатами поиска в списках.

← На главную