vip писал(а) 28. Июня 2006 :: 19:06: Цитата:А метод НайтиБлижайшуюБольше() разве не спасёт Отца Русской Демократии? По-моему так самое оно.
Нет. Все-таки не спас

Работает так.
Находит слово, начинающееся с первой буквы ключа и все. На дальнейшее увеличение длины ключа не реагирует.
Пример.
Патрушев
Петров.
Ключ "П" - результат Патрушев.
Ключ "Пе" - результат Патрушев.
Если такого нет, находит следующее по алфавиту.
Абыдно...
Фу блин... Напугал... Но напугал с пользой для дела - теперь есть тест на поиск

Думаю у тебя там с регистром букв что-то не то, потому что тест работает
Процедура тестНайтиБлижайшую_Строки() Экспорт
Сам = Сам();
ИТ = СоздатьОбъект("ИндексированнаяТаблица");
ИТ.НоваяКолонка("к1");
ИТ.НоваяСтрока();
ИТ.к1 = "Иванов";
ИТ.НоваяСтрока();
ИТ.к1 = "Патрушев";
ИТ.НоваяСтрока();
ИТ.к1 = "Петров";
ИТ.НоваяСтрока();
ИТ.к1 = "Сидоров";
ИТ.ДобавитьИндекс("и1", "к1");
Сам.ПроверитьРавенство(ИТ.НайтиБлижайшуюБольше("Пе", "и1"), 3);
Сам.ПроверитьРавенство(ИТ.НайтиБлижайшуюБольше("пе", "и1"), 2);
ИТ.ДобавитьИндекс("и2", "^к1");
Сам.ПроверитьРавенство(ИТ.НайтиБлижайшуюБольше("ПЕ", "и2"), 3);
Сам.ПроверитьРавенство(ИТ.НайтиБлижайшуюБольше("пе", "и2"), 3);
КонецПроцедуры
У тебя скорее всего вместо
ТЗ.НайтиБлижайшуюБольше("Пе", "и1") получается
ТЗ.НайтиБлижайшуюБольше("пе", "и1") вот и находится первое слово на "П", потому что "п" < "П".
Самое простое - построй индекс без учёта регистра, т.е. типа так:
ТЗ.ДобавитьИндекс("и1", "^к1");
и всё должно заработать.