Имя: Пароль:
1C
1С v8
Поиск в дереве значений по неполному наименованию
,
0 Fuas4
 
18.02.14
10:15
День добрый!
Ищу строку в дереве следующим образом:
Структ = новый Структура;
        Структ.Вставить("Наименование",Текст);
        НайденныеСтроки = ТабличноеПолеТовары.Строки.НайтиСтроки(Структ,Истина);

Все нахожу, если Текст = полное наименование товара. Если не полное, то не нахожу. Пример: Ололо555 - нахожу, Ололо - не нахожу. Как побороть?
1 Borteg
 
18.02.14
10:18
%
2 Fuas4
 
18.02.14
10:18
(1) Пробовал, не взлетело. так писал:
Структ.Вставить("Наименование","%"+Текст+"%");
3 Fuas4
 
18.02.14
10:25
Неужели рекурсивным перебором? "Годнее" способа нет?
4 Fuas4
 
18.02.14
12:08
на всякий случай up
5 Wobland
 
18.02.14
12:08
да иди уже перебирай ;)
6 1Сергей
 
18.02.14
12:09
Запросом
7 Wobland
 
18.02.14
12:11
(6) к дереву?
8 Fuas4
 
18.02.14
12:14
(5) Это слишком не по самурайски. Я хочу сидеть на берегу реки и видеть, как дерево само ищет строки
9 Wobland
 
18.02.14
12:16
(8) присоединяюсь! как называется это вещество? ;)
10 Wobland
 
18.02.14
12:17
это справочник умеет искать по вхождению. да и то не по всякому
11 Fuas4
 
18.02.14
12:20
ну и ладно, ушел пербирать
12 1Сергей
 
18.02.14
12:22
(11) главное не перебрать с этими чудесными таблетками, расширяющими сознание
13 Fuas4
 
18.02.14
13:19
НайтиСтроки() = 0,003 секунды, поиск рекурсией = 52 секунды. #ЗачемТакЖить
14 Wobland
 
18.02.14
13:25
(13) в рекурсии на равенство сравнивал?
15 Fuas4
 
18.02.14
13:31
(14) СтрЧислоВхождений(стр.Номенклатура.Наименование,Текст)
16 Fuas4
 
18.02.14
13:32
>0
17 kosts
 
18.02.14
13:32
(15) Ну ясно понятно. Дергается сервер каждый раз...
Вот и долго.
18 kosts
 
18.02.14
13:33
Добавь колонку в дерево с наименованием, будет быстрее
19 Fuas4
 
18.02.14
13:33
(18) Именно по такой колонке и искал. По колонке со ссылкой искать не будет, надо чтоб типы совпадали
20 Fuas4
 
18.02.14
13:34
(17) Почему сервер? Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение
21 Wobland
 
18.02.14
13:34
ты несколько искал через точку от значения в колонке
22 Fuas4
 
18.02.14
13:35
точно ж. Надо стр.Наименование
23 Wobland
 
18.02.14
13:37
ну и когда сделаешь без поиска подстроки, получишь результат близкий к НайтиСтроки, я думаю
24 Fuas4
 
18.02.14
13:38
0,2 секунды с Стр.Наименование. Без поиска подстроки - это как?
25 Wobland
 
18.02.14
13:38
(24) стр.Наименование=Нужное
26 Wobland
 
18.02.14
13:39
ещё можно поразмыслить над тем, что работает быстрее: запрос или СтрЧислоВхождений
27 Fuas4
 
18.02.14
13:39
А нужное = %текст%?
28 Wobland
 
18.02.14
13:40
(27) пытаюсь сказать, что правильный перебор близок по времени к НайтиСтроки
29 Fuas4
 
18.02.14
13:41
(28) Понял теперь :)
30 Fuas4
 
18.02.14
13:43
А как "нужное" из (25) получить не понял. Есть например у меня "ОЛОЛО", что мне в "Нужное" написать, чтобы Ололо555 тоже нашлось?
31 Wobland
 
18.02.14
13:44
(30) забей уже на (25). лучше замерь запрос в цикле с ПОДОБНО и СтрЧислоВхождений
32 Fuas4
 
18.02.14
13:46
(31) У меня как в (27) не взлетело. Щас попробую (31), че нет то :)
33 Wobland
 
18.02.14
13:48
(32) и не взлетит, пока ты не сумеешь рассказать платформе, что ты понимаешь под процентом: любую подстроку или именно символ процента. а ты не сумеешь, она тупа
34 Fuas4
 
18.02.14
13:48
так, стоп. А запрос то я к чему буду делать? К дереву?
35 Wobland
 
18.02.14
13:49
(34) что-то типа
Текст="выбрать 0 где &СтрокаПоиска подобно "%"+&ОчередноеНаименование+"%"";
ЕстьКонтакт=НЕ Запрос.Выполнить().Пустой();
36 Fuas4
 
18.02.14
14:06
Че то я не понимаю в запросах. По твоему у меня не взлетает
37 Wobland
 
18.02.14
14:10
ну делай через СтрЧислоВхождений. сейчас-то уже не 50 секунд?
38 Fuas4
 
18.02.14
14:11
0,21. но интересно же :)
39 Wobland
 
18.02.14
14:12
(38) мне лениво отлаживать ;)
40 romashov
 
18.02.14
14:27
а если таблицу значений сделать заполнять ее при построении дерева колонки наименование индекс строки и сама строка дерева. Поиск к запросом параметр таблица пользуешь "Подобно" ка хочешь на выходе индексы нужных строк находишь их в таблице и обрабатываешь как хочешь.
41 catena
 
18.02.14
14:30
А Найти() не будет несколько быстрее? У меня получается чуть быстрее.
42 romashov
 
18.02.14
14:31
на вкус ка говорится. в зависимости от потребности. а если поиск сложный по вхождению нескольких строк
43 Fuas4
 
18.02.14
14:33
че то я решил, что 0,2 секунды меня устраивает. Спасибо большое всем
44 wade25
 
18.02.14
14:35
Быстрее дерево в ТЗ выгрузить и запросом.
45 Wobland
 
18.02.14
15:56
(44) а что делать с тем набором полей, которые вернутся в качестве результата?
46 wade25
 
19.02.14
09:34
(46) Вернется единственное, что ищет. Сворачивание в ТЗ подразумевает до нижнего уровня каждой ветки. Если несколько найдет, то то же, что и в обычном случае.
Независимо от того, куда вы едете — это в гору и против ветра!