Была поставленна такая задача. Начал думать как бы организовать этакий полнотекстовый поиск по справочнику. Всякие запросы с LIKE-ами отмёл сразу, за неуниверсализм и зависимость от условий. Да и не сможет сделать поиск внутри строки по словам. Хотелось универсального, без компонент и независимо от DBF или SQL.
Идея метода такова: создаём справочник-индекс у в которого будет два поля - уникальное слово и коды элементов. Пишем обработку которая, собирает все уникальные (не цифры и не менее 3 символов) слова в наименованиях справочника элементов и в каких кодах это слово встречается. Коды перечисляются через запятую. Потом делаем непосредственно индекс - индексом будет строка из всех слов, через точку запятой, в той последовательности, как у нас хранится в справочнике-индексе.
При нажатии на кнопку, перехватываем её (например formex.dll) и простой операцией поиска в индексе-строке с разделителем впереди (что бы искалось с начала слова, а ни любое вхождение внутри слов, хотя для нескольких букв можно уже и внутри) ищем позицию, считаем сколько разделителей перед найденной позицией. По количество разделителей - получаем позицию в справочнике-индексе (который кстати можно загрузить в таблицу значений предварительно) - во втором поле которого перечисленны коды элементов справочника в которых есть слово начинающеяся с этой буквы или некоторого количества букв (советую начинать с двух-трёх). Потом обрезаем строку индекс по это слово и исчем дальше вхождения и тут рекурсия. Потом пробегаемся по списку кодов, которые мы собираем и вытаскиваем уже сами элементы. Кстати этот способ можно применять для нескольких слов в поиске ища по словно - можно искать такого типа "сап 42".
Данный способ пробовался на справочнике товаров свыше 12 тысяч позиций. Собирание индекса таблицы, самый долгий процесс - порядка нескольких секунд, его можно делать, по событию изменения наименований или по расписанию. Поиск по индексу происходит достаточно шустро - меньше секунды. Кстати на удивление немного получается в справочнике-индексе строк, по сравнению со справочником источником. Единственно я не решил проблему с перехватом нажатий клавиш с помощью formex.dll. Срабатывает весьма не стабильно. Может кто нибудь предложит другой способ. Предлагаю обработки, но они не рабочие на стандартных конфах, но доточить на любой справочник - не представляется никаких проблем (внутри чистая "математика", названия справочников можно изменить и всё заработает)
Может быть способ кому нибудь пригодится.