#3
by asady
Функция НайтиПохожиеОбъектыПоСловам(ИмяСправочника, текНаименование, текВладелец="", ВсеВарианты=Истина) //ТочноеСоответствие стрПоиска=СокрЛП(текНаименование); //Сообщить("поиск по наименованию :"+стрПоиска+" в спр."+ИмяСправочника); Запрос = Новый Запрос; Если СокрЛП(текВладелец)<>"" Тогда ТекстЗапроса="ВЫБРАТЬ | Спр.Код, | Спр.Ссылка, | Спр.Владелец |ИЗ | Справочник."+ИмяСправочника+" КАК Спр |ГДЕ | Спр.Наименование ПОДОБНО &стрПоиска | И Спр.Владелец=&текВладелец | УПОРЯДОЧИТЬ ПО Спр.Код"; Запрос.УстановитьПараметр("текВладелец",текВладелец); Иначе ТекстЗапроса="ВЫБРАТЬ | Спр.Код, | Спр.Ссылка |ИЗ | Справочник."+ИмяСправочника+" КАК Спр |ГДЕ | Спр.Наименование ПОДОБНО &стрПоиска | УПОРЯДОЧИТЬ ПО Спр.Код"; КонецЕсли; Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("стрПоиска","%"+стрПоиска+"%"); Рез=Запрос.Выполнить; Результат=Неопределено; Если НЕ Рез.Пустой Тогда Результат=Рез.Выгрузить; Иначе Если ВсеВарианты Тогда СписокСлов=ПолучитьСписокСлов(стрПоиска); колслов=СписокСлов.Количество; если колслов>1 Тогда стрПоиска=стрЗаменить(стрПоиска,СписокСлов[колслов-1].Значение,""); ОбработкаПрерыванияПользователя; Результат=НайтиПохожиеОбъектыПоСловам(ИмяСправочника,стрПоиска,текВладелец); КонецЕсли; КонецЕсли; КонецЕсли; возврат Результат; КонецФункции Функция ПолучитьСписокСлов(стрПоиска) перем Буфер; СЗ=Новый СписокЗначений; //Сообщить("делим на слова :"+стрПоиска); Буфер=СтрЗаменить(стрПоиска,Символ," "); Буфер=СтрЗаменить(стрПоиска,Символ," "); Буфер=СтрЗаменить(Буфер,Символ," "); //убираем паразитов Буфер=СтрЗаменить(Буфер,"."," "); Буфер=СтрЗаменить(Буфер,","," "); Буфер=СтрЗаменить(Буфер,"_"," "); Буфер=СтрЗаменить(Буфер,"("," "); Буфер=СтрЗаменить(Буфер,")"," "); Буфер=СтрЗаменить(Буфер,"ООО",""); Буфер=СтрЗаменить(Буфер,"OOO",""); Буфер=СтрЗаменить(Буфер,"ЗАО",""); Буфер=СтрЗаменить(Буфер,"ОАО",""); Буфер=СтрЗаменить(Буфер,"OAO",""); Буфер=СокрЛП(Буфер); //Сообщить(" почистили :"+Буфер); Буфер=СтрЗаменить(Буфер,Символ,Символы.ПС); Буфер=СтрЗаменить(Буфер,Символы.Таб,Символы.ПС); Для Счетчик = 1 По СтрЧислоСтрок(Буфер) Цикл ТекСтрока = СтрПолучитьСтроку(Буфер, Счетчик); Если СтрДлина(ТекСтрока)>2 Тогда СЗ.Добавить(ТекСтрока); //Сообщить(ТекСтрока); Конецесли; КонецЦикла; возврат СЗ; КонецФункции
#4
by Скользящий
Поищи по форуму на слова "нечёткое сравнение строк" и на проклабе вроде готовое решение валяется.
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Как работает 1С с 64 разрядной операционкой
- Автоматическое формирование книги покупок и книги продаж в типовой бухии
- Удаление дублей в таблице значений (у кого есть наработки ?)
- Помогите!НЕ получается установить главный узел - ПланыОбмена.УстановитьГл
- Как лучше реализовать отбор в построителе объединенного отчета?
- Программно завершить процесс из 1С
- Форма:Список.....
- ЗиК: Компенсация отпуска при увольнении
- Конструктор отчетов в ЗиК 7.7
- При обновлении: 0x80080005 ошибка при выполнении приложения-сервера
- v7: Отображение остатков при подборе
- Запуск внешней обработки по кнопке меню
- v7: КД: ПОМОГИТЕ настроить правила обмена для ручных операций
- Как запросом определить число строк в табличной части?
- v7: Программно нажать ENTER
- Влияние количества общих реквизитов на производительность
- Журнал расчетов
- Создаем в документе отрывной корешок?
- v7: Как в табличную часть добавить кнопку?
- Ввод остатков РБП в УПП