Поиск похожей строки из массива объектов для проверки на основании исходной строки.
// Функция - Поиск похожей строки из набора строк
//
// Параметры:
// ИсходнаяСтрока - Строка - Исходная строка
// ОбъектыДляПроверки - Массив - Массив элементов произвольного типа, в котором будем искать похожую строку
// пНаправлениеПоиска - НаправлениеПоиска - Указывает направление поиска подстроки в строке
// ЖелательныйПроцентСовпадения - Число - Ожидаемый процент совпадения подстроки поиска в проверяемой строке. По умолчанию 50
//
// Возвращаемое значение:
// Строка - строка с максимальным вхождением подстроки поиска
//
Функция ПоискПохожейСтроки(ИсходнаяСтрока, ОбъектыДляПроверки, пНаправлениеПоиска, ЖелательныйПроцентСовпадения)
ПохожаяСтрока = "";
ТаблицаСтатистики = Новый ТаблицаЗначений;
ТаблицаСтатистики.Колонки.Добавить("Объект");
ТаблицаСтатистики.Колонки.Добавить("ЧислоВхождений");
ДлинаИсходнойСтроки = СтрДлина(ИсходнаяСтрока);
Для каждого Элемент Из ОбъектыДляПроверки Цикл
ТекОбъект = ВРЕГ(Элемент);
ДлинаТекОбъекта = СтрДлина(ТекОбъект);
Для Сч = 0 По ДлинаИсходнойСтроки Цикл
Если пНаправлениеПоиска = НаправлениеПоиска.СНачала Тогда
ИскомаяСтрока = Сред(ИсходнаяСтрока, 1, Сч + 1);
НачПозицияПоиска = 1;
Иначе
ИскомаяСтрока = Сред(ИсходнаяСтрока, ДлинаИсходнойСтроки - Сч, Сч + 1);
НачПозицияПоиска = ДлинаТекОбъекта;
КонецЕсли;
Если СтрНайти(ТекОбъект, ИскомаяСтрока, пНаправлениеПоиска, НачПозицияПоиска) > 0 Тогда
СтрСтатистика = ТаблицаСтатистики.Найти(ТекОбъект, "Объект");
Если СтрСтатистика <> Неопределено Тогда
СтрСтатистика.ЧислоВхождений = СтрДлина(ИскомаяСтрока);
Иначе
Если Цел(СтрДлина(ИскомаяСтрока) / ДлинаТекОбъекта * 100) > ЖелательныйПроцентСовпадения Тогда
СтрСтатистика = ТаблицаСтатистики.Добавить();
СтрСтатистика.Объект = ТекОбъект;
СтрСтатистика.ЧислоВхождений = СтрДлина(ИскомаяСтрока);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Если ЗначениеЗаполнено(ТаблицаСтатистики) Тогда
ТаблицаСтатистики.Сортировать("ЧислоВхождений УБЫВ");
ПохожаяСтрока = ТаблицаСтатистики.Получить(0).Объект;
КонецЕсли;
Возврат ПохожаяСтрока
КонецФункции
СтрШаблон (8.1, 8.2, 8.3 в режиме совместимости 8.2)
ОтборДинамическогоСписка (БСП)
ОсуществитьПоискКонтактовПоСтроке (БСП)
СформироватьСтрокуДляПоискаВЗапросе (БСП)
Значение строки поиска динамического списка
ПриИзмененииФлажкаИспользоватьПоиск (БСП)