МенеджерПолнотекстовогоПоиска.ОбновлениеИндексаЗавершено

Методы · IndexUpdateComplete

Определяет завершение обновления индекса.

Синтаксис

ОбновлениеИндексаЗавершено()
Полное описание, параметры и ограничения

МенеджерПолнотекстовогоПоиска.ОбновлениеИндексаЗавершено (FullTextSearchManager.IndexUpdateComplete)

МенеджерПолнотекстовогоПоиска (FullTextSearchManager)

ОбновлениеИндексаЗавершено (IndexUpdateComplete)

Доступен, начиная с версии 8.1.

Синтаксис:
ОбновлениеИндексаЗавершено()
Возвращаемое значение:
Тип: Булево.
Истина, если индекс полнотекстового поиска полностью соответствует текущему состоянию информационной базы и слияние полнотекстового индекса не требуется.

Если используется Версия2 полнотекстового поиска, то функция возвращает Ложь, если ИндексАктуален возвращает Ложь. В остальных случаях возвращает Истина, так как слиянием индексов управляет сервер полнотекстового поиска.
Описание:

Определяет завершение обновления индекса.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Примечание:
Если режим полнотекстового поиска запрещен, то использование метода вызывает исключение.
Использование в версии:

Доступен, начиная с версии 8.1.

Описание изменено в версии 8.3.24.

Методическая информация

Практические примеры

Отличить актуальность индекса от его целостности

Читаем фактические состояние и настройки. ПроверитьИндекс не восстанавливает индекс и не заменяет проверку актуальности.

Где и как запускать

Полный серверный общий модуль УчебныйПолнотекстовыйПоиск своей отдельной учебной базы.

Подготовка

  1. Используйте только отдельную собственную конфигурацию УчебнаяКонфигурацияСинтаксиса с собственным справочником УчебныеТовары. Включите использование полнотекстового поиска у справочника и Наименование в своей учебной конфигурации.

  2. Вручную создайте ровно три товара: Учебномаяк Книга, Учебномаяк Ручка, Учебномаяк Коробка. Код урока не создаёт и не записывает эти товары. Маркер Учебномаяк нужен, чтобы не искать реальные сведения.

  3. Создайте серверный общий модуль УчебныйПолнотекстовыйПоиск с флагом Сервер, вставьте весь модуль выбранного урока. Из серверного обработчика своей учебной обработки вызовите УчебныйПолнотекстовыйПоиск.ВыполнитьПример().

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

  5. Для административных уроков нужен единственный пользователь УчебныйПользовательСинтаксиса, право Администрирование, монопольный сеанс без разделителей данных. В этих уроках используется только Версия1; Версия2 требует отдельной подготовки поискового сервера.

  6. Первый запуск административного урока делайте с пустым подтверждением. Не используйте рабочую базу или копию с реальными данными. Обслуживание меняет индекс/настройки и может занимать время, но не должно подменяться удалением товаров.

Процедура ВыполнитьПример() Экспорт
    Сообщить("Версия: " + Строка(ПолнотекстовыйПоиск.ПолучитьВерсиюПолнотекстовогоПоиска()));
    Сообщить("Дата актуальности: " + Формат(ПолнотекстовыйПоиск.ДатаАктуальности(), "ДФ=dd.MM.yyyy HH:mm:ss"));
    Сообщить("Индекс актуален: " + Строка(ПолнотекстовыйПоиск.ИндексАктуален()));
    Сообщить("Обновление и слияние завершены: " + Строка(ПолнотекстовыйПоиск.ОбновлениеИндексаЗавершено()));
    Сообщить("Лимит параллельных заданий: " + Строка(ПолнотекстовыйПоиск.ПолучитьКоличествоЗаданийИндексирования()));
    Сообщить("Максимальный размер данных, байт: " + Строка(ПолнотекстовыйПоиск.ПолучитьМаксимальныйРазмерИндексируемыхДанных()));
    Сообщить("Разделение составных слов: " + Строка(ПолнотекстовыйПоиск.ПолучитьРежимРазделенияСоставныхСлов()));
    Сообщить("Целостность файлов индекса: " + Строка(ПолнотекстовыйПоиск.ПроверитьИндекс()));
КонецПроцедуры

Разбор по шагам

  1. Проверить принадлежность базы. Получить версию, дату, актуальность и завершённость обновления/слияния.

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

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

  4. Показать фактические значения. Не превращать Ложь в успешный результат и не выполнять автоматическую очистку.

Как проверить результат

  1. Все значения выводятся как диагностика, не обязаны быть Истина или заранее заданной датой.

  2. Корректная целостность и неактуальный индекс возможны одновременно. При запрещённом поиске некоторые вызовы вызовут исключение.

Ожидаемый результат

Новичок различает состояние индекса, его целостность, дату и настройки без автоматического ремонта.

На что обратить внимание

  1. Дата актуальности не является датой последнего изменения каждого товара.

  2. ПроверитьИндекс может занять время. Это не DBCC, не восстановление базы и не поиск товара.

  3. 0 в максимальном размере означает отсутствие этого ограничения, 0 заданий — автоматический подбор; не трактуйте их как отключённый поиск.

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

Пересоздать индекс только своей отдельной базы Версия1

Очистка индекса необратима для его текущего состояния, поэтому она вынесена в самостоятельный подтверждаемый опыт. Данные товаров не удаляются.

Где и как запускать

Полный серверный общий модуль УчебныйПолнотекстовыйПоиск своей отдельной учебной базы.

Подготовка

  1. Используйте только отдельную собственную конфигурацию УчебнаяКонфигурацияСинтаксиса с собственным справочником УчебныеТовары. Включите использование полнотекстового поиска у справочника и Наименование в своей учебной конфигурации.

  2. Вручную создайте ровно три товара: Учебномаяк Книга, Учебномаяк Ручка, Учебномаяк Коробка. Код урока не создаёт и не записывает эти товары. Маркер Учебномаяк нужен, чтобы не искать реальные сведения.

  3. Создайте серверный общий модуль УчебныйПолнотекстовыйПоиск с флагом Сервер, вставьте весь модуль выбранного урока. Из серверного обработчика своей учебной обработки вызовите УчебныйПолнотекстовыйПоиск.ВыполнитьПример().

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

  5. Для административных уроков нужен единственный пользователь УчебныйПользовательСинтаксиса, право Администрирование, монопольный сеанс без разделителей данных. В этих уроках используется только Версия1; Версия2 требует отдельной подготовки поискового сервера.

  6. Первый запуск административного урока делайте с пустым подтверждением. Не используйте рабочую базу или копию с реальными данными. Обслуживание меняет индекс/настройки и может занимать время, но не должно подменяться удалением товаров.

Процедура ВыполнитьПример(Подтверждение = "") Экспорт
    Пользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
    Текущий = ПользователиИнформационнойБазы.ТекущийПользователь();
    Если Пользователи.Количество() <> 1 ИЛИ Текущий = Неопределено Тогда
        ВызватьИсключение "Для удаления истории нужна отдельная база с одним учебным пользователем";
    КонецЕсли;
    Если Текущий.Имя <> "УчебныйПользовательСинтаксиса" Тогда
        ВызватьИсключение "Войдите только под собственным учебным пользователем";
    КонецЕсли;
    Если НЕ МонопольныйРежим() Тогда
        ВызватьИсключение "Сначала вручную откройте свою учебную базу монопольно";
    КонецЕсли;
    Если ПолнотекстовыйПоиск.ПолучитьВерсиюПолнотекстовогоПоиска() <> ВерсияПолнотекстовогоПоиска.Версия1 Тогда
        ВызватьИсключение "Этот административный опыт рассчитан только на собственный стенд Версия1";
    КонецЕсли;
    Если Подтверждение <> "ПЕРЕСОЗДАЮ ТОЛЬКО МОЙ УЧЕБНЫЙ ИНДЕКС ВЕРСИЯ1" Тогда
        Сообщить("Подтверждение отсутствует; индекс и режим не менялись");
        Возврат;
    КонецЕсли;
    ПолнотекстовыйПоиск.УстановитьВерсиюПолнотекстовогоПоиска(ВерсияПолнотекстовогоПоиска.Версия1);
    ПолнотекстовыйПоиск.УстановитьРежимПолнотекстовогоПоиска(РежимПолнотекстовогоПоиска.Разрешить);
    ПолнотекстовыйПоиск.ОчиститьИндекс();
    ПолнотекстовыйПоиск.ОбновитьИндекс(Истина, Ложь);
    Сообщить("Версия: " + Строка(ПолнотекстовыйПоиск.ПолучитьВерсиюПолнотекстовогоПоиска()));
    Сообщить("Дата актуальности: " + Формат(ПолнотекстовыйПоиск.ДатаАктуальности(), "ДФ=dd.MM.yyyy HH:mm:ss"));
    Сообщить("Индекс актуален: " + Строка(ПолнотекстовыйПоиск.ИндексАктуален()));
    Сообщить("Обновление и слияние завершены: " + Строка(ПолнотекстовыйПоиск.ОбновлениеИндексаЗавершено()));
    Если НЕ ПолнотекстовыйПоиск.ИндексАктуален() Тогда
        ВызватьИсключение "После пересоздания индекс не актуален; поиск не считается восстановленным";
    КонецЕсли;
    Сообщить("Проверьте собственные три товара отдельным уроком поиска; их записи этот код не удалял");
КонецПроцедуры

Разбор по шагам

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

  2. Код откажется при другой версии, числе пользователей, имени или режиме. Без точной фразы не меняется даже режим поиска.

  3. Явно оставить ту же Версия1 и режим Разрешить. Это не пример миграции Версия1↔Версия2 и не установка Java.

  4. Удалить только индекс, затем полностью обновить его для собственных трёх товаров. При ошибке обновления старый индекс автоматически не возвращается.

  5. Проверить фактическую актуальность, затем отдельно выполнить поиск. Не выдавать успешный вызов очистки за готовый восстановленный поиск.

Как проверить результат

  1. Без подтверждения нет изменений. При успешном пересоздании актуальность Истина и собственный поиск снова даёт три товара.

  2. Если обновление завершилось ошибкой, индекс может остаться пустым или неполным. Код не скрывает этот результат.

Ожидаемый результат

Опасный метод показан на маленьком собственном стенде с честным объяснением необратимости и последующей индексации.

На что обратить внимание

  1. ОчиститьИндекс не удаляет объекты базы, но поиск до обновления может не находить их.

  2. Переход на Версия2 требует отдельного поискового сервера и проверки ресурсов; здесь версия не переключается.

  3. Настройки режима/версии не откатываются в этом опыте: предпосылки требуют их исходно равными явно установленным значениям.

  4. Не запускайте очистку автоматически при любом Ложь от ПроверитьИндекс; сначала разберите реальную причину на копии.

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.