Полная экспортная процедура фильтрует Книгу и Ручку по строке поиска. Отдельная процедура проверяет результат без настройки интерфейса.
Где и как запускать
Полный код клиентского неглобального общего модуля УчебныйГлобальныйПоиск. Не вставляйте его внутрь обработчика формы и не ставьте Сервер вместо клиентского флага.
Подготовка
Используйте отдельную пустую учебную конфигурацию УчебнаяКонфигурацияСинтаксиса и учебного пользователя. Не устанавливайте этот поиск в рабочую УТ/КА2/УНФ: пример намеренно оставляет в плане только собственный обработчик.
Создайте общий модуль УчебныйГлобальныйПоиск: Глобальный=Ложь, Клиент (управляемое приложение)=Истина, Сервер=Ложь. Вставьте в него полный код урока собственного обработчика. Он работает только с константами и не обращается к базе.
Создайте собственную управляемую обработку с командами НастроитьУчебныйПоиск, НачатьУчебныйПоиск, ВосстановитьПоиск. Вставьте полный модуль формы из последнего урока и назначьте эти обработчики команд.
Запускайте в поддерживаемом клиенте 8.5.1.1343. Сначала настройте поиск, затем начните, дождитесь результата и восстановите исходные настройки до закрытия формы. Не выполняйте восстановление сразу после НачатьПоиск: он только начинает операцию.
Процедура НайтиУчебныеКниги(СтрокаПоиска, РезультатыПоиска, ДополнительныеПараметры) Экспорт
Искомое = НРег(СокрЛП(СтрокаПоиска));
Если ПустаяСтрока(Искомое) Тогда
Возврат;
КонецЕсли;
Префикс = "guide-";
Если ТипЗнч(ДополнительныеПараметры) = Тип("Структура") Тогда
ПереданныйПрефикс = Неопределено;
Если ДополнительныеПараметры.Свойство("Префикс", ПереданныйПрефикс) Тогда
Если ТипЗнч(ПереданныйПрефикс) <> Тип("Строка") Тогда
ВызватьИсключение "Префикс должен быть строкой";
КонецЕсли;
Префикс = ПереданныйПрефикс;
КонецЕсли;
КонецЕсли;
Если СтрНайти(НРег("Книга"), Искомое) > 0 Тогда
РезультатыПоиска.Добавить(Префикс + "book", "Книга", Новый Картинка, "УчебныеКниги", "Учебный экземпляр: количество 3");
КонецЕсли;
Если СтрНайти(НРег("Ручка"), Искомое) > 0 Тогда
РезультатыПоиска.Добавить(Префикс + "pen", "Ручка", Новый Картинка, "УчебныеКниги", "Учебный экземпляр: количество 1");
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьУчебныйПоиск() Экспорт
Результаты = Новый РезультатГлобальногоПоиска;
НайтиУчебныеКниги(" КНИ ", Результаты, Новый Структура("Префикс", "guide-"));
Сообщить(Результаты.Количество() = 1);
Книга = Результаты.Найти("guide-book");
Если Книга = Неопределено Тогда
ВызватьИсключение "Тест учебной книги не прошёл";
КонецЕсли;
Сообщить(Книга.Представление = "Книга");
ПустойПоиск = Новый РезультатГлобальногоПоиска;
НайтиУчебныеКниги(" ", ПустойПоиск, Неопределено);
Сообщить(ПустойПоиск.Количество() = 0);
Ручки = Новый РезультатГлобальногоПоиска;
НайтиУчебныеКниги("руч", Ручки, Неопределено);
Сообщить(Ручки.Найти("guide-pen") <> Неопределено);
КонецПроцедурыРазбор по шагам
Сигнатура экспортной процедуры точно соответствует обработчику элемента плана: СтрокаПоиска, РезультатыПоиска, ДополнительныеПараметры. Выходная коллекция дополняется, не заменяется новой.
СокрЛП убирает края, НРег делает регистронезависимую проверку. Ищем подстроку в двух собственных названиях, не используем SQL, полнотекстовый индекс или бизнес-остатки.
Пустая строка возвращает ноль собственных результатов. Параметр Префикс необязателен, но при наличии обязан быть строкой; проверка Свойство предшествует использованию.
ПроверитьУчебныйПоиск создаёт отдельную коллекцию для каждого запроса. Вызовите её из клиентского обработчика собственной формы: УчебныйГлобальныйПоиск.ПроверитьУчебныйПоиск().
Это минимальный собственный поиск с реальными платформенными карточками, а не поиск настоящего товара в одной из предоставленных конфигураций.
Как проверить результат
Четыре проверки дают Истина: КНИ находит Книгу, пробелы ничего не находят, руч находит Ручку.
Замените Префикс на Число: процедура выдаёт объясняющую ошибку типа, не формирует некорректный ключ.
Ожидаемый результат
Подготовлен полный обработчик с проверками и детерминированными собственными результатами.
На что обратить внимание
Не заменяйте существующий план рабочего поиска одним учебным обработчиком.
Этот учебный фильтр не заменяет полнотекстовый поиск с правами, ранжированием и поиском по реальным данным.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.