Имя: Пароль:
1C
1С v8
Полнотекстовый поиск по части Артикула
0 evorle145
 
22.12.15
15:19
в конфигурации используется функция:

Функция ПолнотекстовыйПоискТоваров(СтрокаПоиска, РезультатПоиска)
    
    МассивШтрихкодов = Новый Массив;
    
    // Поиск данных
    РазмерПорции = 200;
    ОбластьПоиска = Новый Массив;
    ОбластьПоиска.Добавить(Метаданные.Справочники.Номенклатура);
    ОбластьПоиска.Добавить(Метаданные.Справочники.ХарактеристикиНоменклатуры);
    ОбластьПоиска.Добавить(Метаданные.РегистрыСведений.ДополнительныеСведения);
    ОбластьПоиска.Добавить(Метаданные.РегистрыСведений.ШтрихкодыНоменклатуры);

    СтрокаПоискаАрхив = СтрокаПоиска;
    СтрокаПоиска = СтрокаПоиска+"*";
    СписокПоиска = ПолнотекстовыйПоиск.СоздатьСписок(СтрокаПоиска, РазмерПорции);
    СписокПоиска.ПолучатьОписание = Ложь;
    СписокПоиска.ОбластьПоиска = ОбластьПоиска;
    СписокПоиска.ПерваяЧасть();


Где я добавил СтрокаПоиска = СтрокаПоиска+"*"
чтобы искались все артикулы с началом СтрокаПоиска. А как сделать чтобы искались артикулы по части слова?
Вот так : СтрокаПоиска ="*"+СтрокаПоиска+"*";       - не работает
1 Волшебник
 
модератор
22.12.15
15:19
%Строка%
2 evorle145
 
22.12.15
15:22
(1) СПС! Но я в СП смотрел, там только:

В строке ввода допускается использование следующих поисковых операторов:
И (AND или #) - поиск данных, содержащих все слова; пример: "запись И документ" - в реквизитах должны быть и "проведение", и "документ" (с учетом морфологии);
ИЛИ (OR или | или ,) - поиск хотя бы одного слова из перечисленных; пример: "запись ИЛИ документ" - в реквизитах должно быть хотя бы одно из слов "запись" или "документ";
НЕ (NOT или ~) - поиск данных, в реквизитах которых есть первое слово, но нет второго; пример: "закрытие НЕ месяц" - будут найдены все, содержащие "закрытие", но не содержащие слова "месяц". Использование "~" в начале строки не допускается;
РЯДОМ/n (NEAR/[+/-]n) - поиск данных, содержащих в одном реквизите указанные слова с учетом морфологии на расстоянии n слов между словами.
Знак указывает, в каком направлении от первого слова будет искаться второе слово ("+" – после первого; "-" – до первого слова).
Если знак не указан, то будет найдены данные, содержащие указанные слова на дистанции n слов друг о друга. Порядок слов не имеет значения.
"фен РЯДОМ/3 воздух" - будут найдены данные, в которых "воздух" находится не более 3-х слов до или после "фен";
фен РЯДОМ/+3 воздух - будут найдены данные, в которых "воздух" находится не более 3-х слов после "фен";
фен РЯДОМ/-3 воздух - будут найдены данные, в которых "воздух" находится не более 3-х слов перед "фен".
РЯДОМ(NEAR) - упрощенный оператор дистанции: оба слова расположены не далее, чем в 8-ми словах друг от друга; пример: "проведение РЯДОМ документ";
"" (текст в кавычках) - поиск точной с учетом морфологии фразы , пример: "проведение документа" - эквивалентно: проведение /1 документа;
() - группировка слов (сколько угодно уровней вложенности); пример: "(проведение | выписка) # (счета, документа)";
* - поиск с использованием группового символа (замена окончания слова). Должно быть введено более 1 значащего символа; пример: "доку*" - найдет "документ", "документировать", "документальный" и др.;
# - нечеткий поиск слов с заданным количеством отличий от указанного (если не указано, то = 1); пример: запрос "#Система" найдет "систама", "сивтема"; запрос "Система#2" найдет "ситтама", "сеттема";
! - поиск с учетом синонимов русского, английского и украинского языков. "!" ставится перед соответствующим словом; пример: поиск "!красный кафель", найдет еще и "алый кафель" и "коралловый кафель".



Никаких % тут не описано....
Откуда инфа? Опыт?
3 Fragster
 
гуру
22.12.15
15:23
(2) это типа из языка запросов, оператор ПОДОБНО... полнотекстовый поиск так не умеет, видимо, (1) предлагает использовать вместо этого запросы...
4 evorle145
 
22.12.15
15:35
Да, действительно , % не работает в полнотекстовом поиске. Так а как же делать?
Ведь когда жму ctrl+f то там же есть вариант поиска по части слова!
5 Лефмихалыч
 
22.12.15
15:38
(4) попробуй найти ""+Строка, а потом Стркоа+"" и сложить результаты
6 Лефмихалыч
 
22.12.15
15:39
блин... "*"+Строка, а потом Стркоа+"*"
7 evorle145
 
22.12.15
15:44
(6) пробую
8 evorle145
 
22.12.15
15:46
нет, так "*"+Строка -  не работает...
9 Fragster
 
гуру
22.12.15
15:47
(4) он работает не через полнотекстовый поиск, а через запросы, а там используется ПОДОБНО и (1)
10 evorle145
 
22.12.15
15:48
(9) да я понял, просто хотелось сделать через полнотекстовый поиск
11 evorle145
 
22.12.15
15:57
ну по ctrl+f же ясно видно что можно использовать при поиске часть строки, но как посмотреть, как это делается?
12 Fragster
 
гуру
22.12.15
15:58
(11) -> (9)
13 evorle145
 
22.12.15
16:13
(12) , убедил. Проще переделать на запрос. Уже переделал. Спасибо!
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.