| 
    
            
         
         | 
    
    
  | 
Динамический поиск элемента справочника по нескольким полям | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        kenshin    
     11.11.11 
            ✎
    11:12 
 | 
         
        Здравствуйте уважаемые Мистяне.
  
        Один директор (в прошлом заядлый айтишник) захотел сделать обработку, в котором будет организован динамический поиск по справочнику (как, например, в гугле). Есть ли у кого-либо подобные наработки или алгоритмы?  | 
|||
| 
    1
    
        kenshin    
     11.11.11 
            ✎
    11:23 
 | 
         
        up     
         | 
|||
| 
    2
    
        Ненавижу 1С    
     гуру 
    11.11.11 
            ✎
    11:24 
 | 
         
        я не против     
         | 
|||
| 
    3
    
        kenshin    
     11.11.11 
            ✎
    11:57 
 | 
         
        (2) не против чего?     
         | 
|||
| 
    4
    
        Ненавижу 1С    
     гуру 
    11.11.11 
            ✎
    12:02 
 | 
         
        (3) такой обработки     
         | 
|||
| 
    5
    
        kenshin    
     11.11.11 
            ✎
    12:07 
 | 
         
        (4) А идеи? :)
  
        Алгоритм, который у меня возник в голове довольно простой: 1) Разбиваем строку на слова 2) Ищем каждое слово в каждом из полей поиска 3) Результаты выводим Все это выполнять при изменении строки. НО Постоянно формировать запрос к базе... думаю, очень медленно и не рационально будет работать...  | 
|||
| 
    6
    
        kenshin    
     11.11.11 
            ✎
    12:08 
 | 
         
        +(5) Мне бы хотелось просто получить подсказку алгоритма, кто занимался такими вещами...     
         | 
|||
| 
    7
    
        Axel2009    
     11.11.11 
            ✎
    12:11 
 | 
         
        полнотекстовый поиск не предлагать?     
         | 
|||
| 
    8
    
        Maxus43    
     11.11.11 
            ✎
    12:12 
 | 
         
        давно придуманы такие велокаты, причем самой 1с     
         | 
|||
| 
    9
    
        kenshin    
     11.11.11 
            ✎
    12:12 
 | 
         
        (7) всмысле? поясните, пожалуйста....     
         | 
|||
| 
    10
    
        Maxus43    
     11.11.11 
            ✎
    12:13 
 | 
         
        (9) 1с даже синонимы умеет искать     
         | 
|||
| 
    11
    
        kenshin    
     11.11.11 
            ✎
    12:13 
 | 
         
        (8) подскажите, пожалуйста, где в 1с реализован такой механизм?     
         | 
|||
| 
    12
    
        Maxus43    
     11.11.11 
            ✎
    12:13 
 | 
         
        (11) > (7)     
         | 
|||
| 
    13
    
        kenshin    
     11.11.11 
            ✎
    12:14 
 | 
         
        (12) ну так что такое "полнотекстовый поиск"? Видимо туплю...     
         | 
|||
| 
    14
    
        Maxus43    
     11.11.11 
            ✎
    12:17 
 | 
         
        будем постить СП, чтоб пнуть в нужном напрвавлении:
  
        МенеджерПолнотекстовогоПоиска.СоздатьСписок (FullTextSearchManager.CreateList) МенеджерПолнотекстовогоПоиска (FullTextSearchManager) СоздатьСписок (CreateList) Синтаксис: СоздатьСписок(<СтрокаПоиска>, <РазмерПорции>) Параметры: <СтрокаПоиска> (необязательный) Тип: Строка. Строка для поиска в реквизитах данных (содержит как слова, которые нужно найти, так и поисковые операторы - И, ИЛИ, НЕ, РЯДОМ, скобки, кавычки). Поиск может осуществляться по нескольким словам, с использованием поисковых операторов и поиском по точной фразе. В строке ввода допускается использование следующих поисковых операторов: И (AND или #) - поиск данных, содержащих все слова; пример: "запись И документ" - в реквизитах должны быть и "проведение" и "документ" (с учетом морфологии); ИЛИ (OR или | или ,) - поиск хотя бы одного слова из перечисленных; пример: "запись ИЛИ документ" - в реквизитах должно быть хотя бы одно из слов "запись" или "документ"; НЕ (NOT или ~) - поиск данных, в реквизитах которых есть первое слово, но нет второго; пример: "закрытие НЕ месяц" - будут найдены все, содержащие "закрытие", но не содержащие слова "месяц". Использование "~" в начале строки не допускается; РЯДОМ/n (NEAR/[+/-]n) - поиск данных, содержащих в одном реквизите указанные слова с учетом морфологии на расстоянии n слов между словами. Знак указывает, в каком направлении от первого слова будет искаться второе слово ("+" – после первого; "-" – до первого слова). Если знак не указан, то будет найдены данные, содержащие указанные слова на дистанции n слов друг о друга. Порядок слов не имеет значения. "фен РЯДОМ/3 воздух" - будут найдены данные, в которых "воздух" находится не более 3-х слов до или после "фен"; фен РЯДОМ/+3 воздух - будут найдены данные, в которых "воздух" находится не более 3-х слов после "фен"; фен РЯДОМ/-3 воздух - будут найдены данные, в которых "воздух" находится не более 3-х слов перед "фен". РЯДОМ(NEAR) - упрощенный оператор дистанции: оба слова расположены не далее, чем в 8-ми словах друг от друга; пример: "проведение РЯДОМ документ"; "" (текст в кавычках) - поиск точной с учетом морфологии фразы , пример: "проведение документа" - эквивалентно: проведение /1 документа; () - группировка слов (сколько угодно уровней вложенности); пример: "(проведение | выписка) # (счета, документа)"; * - поиск с использованием группового символа (замена окончания слова). Должно быть введено более 1 значащего символа; пример: "доку*" - найдет "документ", "документировать", "документальный" и др.; # - нечеткий поиск слов с заданным количеством отличий от указанного (если не указано, то = 1); пример: запрос "#Система" найдет "систама", "сивтема"; запрос "Система#2" найдет "ситтама", "сеттема"; ! - поиск с учетом синонимов русского, английского и украинского языков. "!" ставится перед соответствующим словом; пример: поиск "!красный кафель", найдет еще и "алый кафель" и "коралловый кафель". Если не указано никаких операторов (слова набраны через пробел), то программа осуществляет поиск всех слов из запроса с использованием оператора И. Замечание 1. Написание операторов И (AND), ИЛИ (OR), НЕ (NOT), РЯДОМ (NEAR) допускается только в верхнем регистре. Замечание 2. Операторы не используются как унарные (в начале строки поиска). Например, нельзя сделать выбор всех глав, в которых отсутствует указанный текст. Ограничение. При использовании нечеткого и группового поиска (операторы "*" и "#") может быть найдено несколько слов. Общее число найденных слов не может превышать 300. <РазмерПорции> (необязательный) Тип: Число. Количество результатов в одной порции. Например, 30. Значение по умолчанию: 20 Возвращаемое значение: Тип: СписокПолнотекстовогоПоиска. Описание: Создает объект СписокПолнотекстовогоПоиска. После создания необходимо вызвать метод ПерваяЧасть - чтобы получить результаты поиска. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Если режим полнотекстового поиска запрещен, то использование метода вызывает исключение  | 
|||
| 
    15
    
        kenshin    
     11.11.11 
            ✎
    12:19 
 | 
         
        (14) большое спасибо.
  
        Просто не слышал про такой механизм. Буду знать. Еще раз спасибо.  | 
|||
| 
    16
    
        Maxus43    
     11.11.11 
            ✎
    12:20 
 | 
         
        (15) книжку по нему почитай, там чтоб его запустить надо много чего сделать, индексы сформировать например, что долго. рег задания всякие и т.д. читаем короче     
         | 
|||
| 
    17
    
        kenshin    
     11.11.11 
            ✎
    12:21 
 | 
         
        (16)
  
        По крайней мере я понял, куда рыть. Спасибо, буду учиться  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |