|   |   | 
| 
 | v7: Как искать в справочнике ? Есть ли что-то типо % LIKE % ? | ☑ | ||
|---|---|---|---|---|
| 0
    
        sysadminlk 23.11.13✎ 16:48 | 
        Есть справочник контрагенты. Там есть поле реквизит Адрес
 Как с можно искать? Например есть адрес: 5 мкр. дом 6 кв.52 Я хочу в строке поиска обработки забить 5 6 52 и чтоб мне выдало где встречается одновременно 5 6 52, по идее в списке будет нужный мне адрес Или вот еще адрес: Московская ул. дом 162 кв.9 Я хочу написать в поиске Московс 162 9 И чтоб в результате был нужный мне адрес. Как реализовать? | |||
| 1
    
        ДенисЧ 23.11.13✎ 16:49 | 
        1с++     | |||
| 2
    
        Диманыч 23.11.13✎ 17:01 | 
        Используй функцию Найти("где ищем","что ищем")     | |||
| 3
    
        Диманыч 23.11.13✎ 17:05 | 
        (1) TSQL     | |||
| 4
    
        sysadminlk 23.11.13✎ 17:05 | 
        Она долго ищет     | |||
| 5
    
        Холст 23.11.13✎ 17:09 | ||||
| 6
    
        Диманыч 23.11.13✎ 17:12 | 
        (4) А тебе насколько быстрее нужно, для быстрого поиска создаются индексы. Или оптимизация     | |||
| 7
    
        Aleksey 23.11.13✎ 17:12 | 
        (4) 1sqlite     | |||
| 8
    
        sysadminlk 23.11.13✎ 17:13 | 
        Я щас вот так сделал.
 Но хочется быстрее искать. Справочник 200000 записей. Процедура НайтиЭл() Ра = Разобрать(Врег(СловоПоиска)); Если Ра.КоличествоСтрок() < 2 Тогда Предупреждение("Нужно хотябы два слова",3); Возврат; КонецЕсли; СписокРезультатов = СоздатьОбъект("СписокЗначений"); Спр = СоздатьОбъект("Справочник.Абоненты"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл НетЭтогоСлова = 0; Ра.ВыбратьСтроки(); Пока Ра.ПолучитьСтроку() = 1 Цикл Адрес = Врег(Спр.АДРЕС); Если Найти(Адрес,Ра.Слово) = 0 Тогда НетЭтогоСлова = 1; Прервать; КонецЕсли; КонецЦикла; Если НетЭтогоСлова=1 Тогда Продолжить; КонецЕсли; СписокРезультатов.ДобавитьЗначение(Спр.ТекущийЭлемент(),Спр.АДРЕС); КонецЦикла; Выб=""; СписокРезультатов.СортироватьПоПредставлению(); Если СписокРезультатов.ВыбратьЗначение(Выб,"Результат поиска",,20)=1 Тогда Сообщить(ТипЗначенияСтр(Выб)); КонецЕсли; КонецПроцедуры // НайтиЭл | |||
| 9
    
        Aleksey 23.11.13✎ 17:13 | 
        (5) там юзается 1с++ (1cpp.dll.) о которой тебе еще в (1) сказали     | |||
| 10
    
        Диманыч 23.11.13✎ 17:24 | 
        (8) Делай через запрос
 В запросе условие с фунцией поиска работает быстрее | |||
| 11
    
        Холст 23.11.13✎ 20:10 | 
        (9) не путай меня с ТС     | |||
| 12
    
        Guk 23.11.13✎ 20:20 | 
        (0) переходите на восьмерку. там есть полнотекстовый поиск...     | |||
| 13
    
        ДенисЧ 23.11.13✎ 20:48 | 
        (12) восьмёрка - сырое неделанное подели.     | |||
| 14
    
        sysadminlk 24.11.13✎ 15:24 | 
        Пока еще актуально.     | |||
| 15
    
        КонецЦикла 24.11.13✎ 15:28 | 
        (8) Тебе по двум словам, которые есть одновременно надо искать? По любому вхождению?     | |||
| 16
    
        sysadminlk 24.11.13✎ 15:32 | 
        по всем словам сразу     | |||
| 17
    
        КонецЦикла 24.11.13✎ 15:34 | 
        По вхождению?
 нашлось вася пупкин лимитед киндзадза астрероид инк набрано ас кин так? | |||
| 18
    
        sysadminlk 24.11.13✎ 15:37 | 
        да     | |||
| 19
    
        GreyK 24.11.13✎ 15:47 | 
        (17) Простым запросом делал?     | |||
| 20
    
        Пенза58 24.11.13✎ 15:51 | 
        (0) Создать доп поле в которое при заполнении адреса будет заносится:5 6 52     | |||
| 21
    
        КонецЦикла 24.11.13✎ 16:04 | 
        (18) Самое простое и тупое - сделать like 2 раза, первый раз запихнув во временную таблицу :)
 (19) По-разному делал | |||
| 22
    
        Mikeware 25.11.13✎ 11:41 | 
        все украдено до вас....
 http://s020.radikal.ru/i716/1311/f3/da4656d2888e.jpg http://i024.radikal.ru/1311/c7/23f2a63dec63.jpg | |||
| 23
    
        КонецЦикла 25.11.13✎ 11:47 | 
        Ему по двум фрагментам сразу надо     | |||
| 24
    
        ОдинСерый 25.11.13✎ 11:49 | 
        (0) гыыыы
 за яйки вешать надо тех кто адрес так делает. программист ты или где? надо отдельно улица дом кв и искать будет по трем полям. | |||
| 25
    
        Mikeware 25.11.13✎ 11:49 | 
        (23) на верхней картинке - по двум (точнее, хоть по скольки)
 а на нижней - по контрагенту (класс почти один и тот же). лень картинки скриншотить... | |||
| 26
    
        Builder 25.11.13✎ 11:55 | 
        Делал без ВК, принцип такой:
 Раскладываем строку на несколько. Делаем запрос по каждой строке через условие "И". В базе SQL на справочнике номенклатуры 90 тыс ищет 1-2 сек. Как то так: 
 | |||
| 27
    
        ОдинСерый 25.11.13✎ 12:30 | 
        (26) 
 раскладывать ничего не надо надо просто делать справочник улиц, его даже и делать не надо он должен быть и так если у вас есть зарплата то там выгрузка в пенсионный там даже справочник свой жесткий был КЛАДР.. вы даже похоже этого не знаете спецы млин. | |||
| 28
    
        Mikeware 25.11.13✎ 13:09 | 
        (27) речь может идти не обязательно об адресном справочнике.     | |||
| 29
    
        Builder 25.11.13✎ 14:48 | 
        (27) Это к чему было? Причем тут улицы?     | |||
| 30
    
        Масянька 25.11.13✎ 14:55 | 
        (26) Похоже на поиск в инете :) Следующий шаг - web-броузер на 1С :))))))
 (29) Ну, не понял человек, чего надо :)))) | |||
| 31
    
        Mikeware 25.11.13✎ 14:57 | 
        (30) "на 1с" не делаи, а вот "в 1с" - делали     | |||
| 32
    
        sysadminlk 25.11.13✎ 16:01 | 
        (22) ощень нама интересно как такое сделать...     | |||
| 33
    
        Mikeware 26.11.13✎ 07:48 | 
        (32) с учетом "Возникла необходимость закрыть исходный код конфигурации.
 Продаю конфигурацию и не хочу чтоб ее изменяли без меня." - могу продать. :-) | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |