|
ПОДОБНО списку (массиву) текстовых значений типа "%НеполноеЗначение%" | ☑ | ||
---|---|---|---|---|
0
Прохожий
01.12.22
✎
13:02
|
ПОДОБНО в запросах работает с конкретными текстовыми операндами. а можно ли переменную сравнить с массивом масок, т.е. логически объединить
Мойобъект.Мойреквизит В (&МассивЗначений) Мойобъект.Мойреквизит ПОДОБНО "%" + &ОдноЗначение + "%" и получить типа Мойобъект.Мойреквизит ПОДОБНО В (&МассивМасокЗначений)? Этот запрос хочется вставить как произвольный в динамический список и чтобы все летало. |
|||
1
1Сергей
01.12.22
✎
13:17
|
Нельзя.
|
|||
2
Прохожий
01.12.22
✎
13:21
|
Да, но мне треккер намберы надо тысячами через подобно сверять. Динамически условие я собрать могу, но нагрузка...
|
|||
3
1Сергей
01.12.22
✎
13:22
|
Меняйте логику хранения данных
|
|||
4
Прохожий
01.12.22
✎
13:24
|
невозможно...
|
|||
5
mistеr
01.12.22
✎
14:39
|
(2) Если тысячами, то надо через равно. Через подобно летать не будет, по-любому.
(4) Не верю. |
|||
6
Kassern
01.12.22
✎
14:48
|
(0) Один из вариантов, это создать временную таблицу из масок и связать ее с реальной через подобно. Летать конечно не будет и лучше через равно вопрос решить изменив архитектуру хранения данных, но все же.
|
|||
7
Прохожий
01.12.22
✎
15:10
|
(6) Да-да. Именно в связь таблиц и пихаю...
|
|||
8
lodger
01.12.22
✎
15:13
|
(0) https://www.youtube.com/watch?v=WSGW4dQTncg
(4) уволить тех кто говорит "невозможно". сделать нормально. |
|||
9
Dmitrii
гуру
01.12.22
✎
15:22
|
(6) Так делать не рекомендуется.
https://its.1c.ru/db/v8std/content/726/hdoc При использовании в тексте запроса оператора ПОДОБНО допустимо использовать только константные строковые литералы или параметры запроса. Запрещается формировать строку шаблона при помощи вычислений, использовать конкатенацию строк средствами языка запросов. Например, допустимо.
Недопустимо:
Запросы, в которых управляющие символы шаблона оператора ПОДОБНО находятся в полях запроса или в вычисляемых выражениях, по-разному интерпретируются на различных СУБД. Запрос, успешно выполняющийся, например, при работе с файловой базой, может возвращать неверные результаты при работе в режиме клиент-сервера. Подобные выражения необходимо переформулировать. Данное требование продиктовано необходимостью переносимости прикладных решений на различные СУБД. |
|||
10
Kassern
01.12.22
✎
15:25
|
(9) Мы же не знаем все подноготной ТС. "Данное требование продиктовано необходимостью переносимости прикладных решений на различные СУБД." ->так может не стоит такая задача обозримом будущем. Может у него вообще разовая задачка, по выданной табличке масок проанализировать и выдать результат.
|
|||
11
lodger
01.12.22
✎
15:26
|
(10) разовая задачка с помещением в динамический список? нестыковочка.
|
|||
12
Kassern
01.12.22
✎
15:28
|
(11) Тут с самого начала нестыковочка, летает и ПОДОБНО редко когда сочетаются)
|
|||
13
Dmitrii
гуру
01.12.22
✎
15:55
|
(10) Не спорю. Возможно конечно. Но всё же.
Когда 1С пишет, что один и тот же запрос может выдавать разные результаты в разных СУБД, это фактически следует понимать, что запрос может выдать вообще всё что угодно в любой момент. После обновления версии платформы, обновления версии СУБД, обновления статистики или индексов в СУБД, на разных копиях одной базы и т.д. Для нормальной работы автору всё равно надо менять либо требования, либо логику хранения данных. А подробностей он не рассказывает. Может в его случае вообще имеет смысл в сторону полнотекстового поиска данных копать по строке "шаблон1 ИЛИ шаблон2 ИЛИ ... ИЛИ шаблонN", получать список поиска и пихать в качестве параметра в свой запрос. Вряд ли конечно, но мы ж не знаем всех нюансов и механики работы пользователей с его динамическим списком. Как часто меняются шаблоны поиска, сколько этих шаблонов (1,10,100,1000)?... |
|||
14
Garykom
гуру
01.12.22
✎
16:02
|
(0) Нет уж, так легко ты от запроса в цикле не избавишься
|
|||
15
Прохожий
02.12.22
✎
06:53
|
(11,12) Задача разовая, пользоваться будут часто, постоянно. Поэтому надо летать ибо потом опять придут что работает медленно. Надо уже сейчас исчерпать предел возможностей.
|
|||
16
Прохожий
02.12.22
✎
06:59
|
(13) Шаблон поиска - это трекер почты. Их каждый раз забивают руками. Списком в многострочное текстовое поле. А потом массивом (как сейчас) подсовывают в запрос и сравнивают точно с Регистром накопления (реквизитом). А надо подобно искать по неполному трекеру (по первым символам). Любая строчка может быть или полным трекером, или неполным, т.е. шаблоном.
Полный трекер-частный случай шаблона. Поэтому дальше обсуждаем шаблоны. |
|||
17
Прохожий
02.12.22
✎
06:59
|
Просто все.
|
|||
18
Прохожий
02.12.22
✎
07:00
|
+(16) Т,е. прошел трекер через регистр или нет.
|
|||
19
kittystark
02.12.22
✎
08:17
|
(0)
выбрать ... где х подобно "%шабл1%" объединить выбрать ... где х подобно "%шабл2%" объединить ... объединить выбрать ... где х подобно "%шаблN%" тот же самый ИЛИ, но только производительный/оптимизированный |
|||
20
НЕА123
02.12.22
✎
08:26
|
(19)
>производительный/оптимизированный это за счет чего? |
|||
21
kittystark
02.12.22
✎
08:43
|
из теории оптимизации запросов
вместо "... где а или б или с" оптимальней будет ...где а ...объединить ...где б ...объединить ...где с |
|||
22
kittystark
02.12.22
✎
08:45
|
(20) +на практике делал замеры в таких (21) запросах в RLS - действительно быстрее
|
|||
23
НЕА123
02.12.22
✎
08:48
|
(21)
>из теории оптимизации запросов что-то не встречал такого... если уж считаешь, что ИЛИ без оптимизации работает, тогда ВЫБОР КОГДА... (22) странно. |
|||
24
kittystark
02.12.22
✎
09:34
|
(23) не переживай, главное что в голове сейчас отложилось, потом при случае можно воспользоваться этой теорией
да, и эффект виден на больших выборках |
|||
25
Прохожий
02.12.22
✎
10:24
|
В общем если через равно из регистра за 3 секунды выбирает для 400 масок по трем полям Трекер.
А через подобно для 400 масок выбирает более 500 секунд. Но с ростом регистра вырастут и тормоза. Хотя тут регистр уже за несколько лет. |
|||
26
Прохожий
02.12.22
✎
10:26
|
(21) Тоже чего-то слышал, сейчас пробую... Три Подобных на каждый реквизит отдельно и Объединить
|
|||
27
Garykom
гуру
02.12.22
✎
10:32
|
(16) >Шаблон поиска - это трекер почты. Их каждый раз забивают руками. Списком в многострочное текстовое поле. А потом массивом (как сейчас) подсовывают в запрос и сравнивают точно с Регистром накопления (реквизитом). А надо подобно искать по неполному трекеру (по первым символам)
Меняй хранение Делать отдельную табличку для шаблонов-трекеров и не в общее многострочное а привязывай ТЧ |
|||
28
Прохожий
02.12.22
✎
10:40
|
(21) По 30 шаблонам 20 сек любым способом.
|
|||
29
mistеr
02.12.22
✎
10:50
|
(15) >Задача разовая, пользоваться будут часто, постоянно.
В цитаты! |
|||
30
mistеr
02.12.22
✎
10:52
|
(16) Чем стандартный поиск в ДС не устраивает?
|
|||
31
vi0
02.12.22
✎
10:56
|
(21) нужно проверять на конкретной СУБД, а также на конкретной версии, а также на конкретных данных
|
|||
32
Dmitrii
гуру
02.12.22
✎
11:29
|
(30) >> Чем стандартный поиск в ДС не устраивает?
Если я правильно понял автора, то у него шаблон не один, а несколько. Стандартный поиск в ДС позволяет искать только по одному шаблону. |
|||
33
mistеr
02.12.22
✎
11:33
|
(32) Нашел, ткнул какую-нибудь галку, информация сохранилась, ищешь следующий.
Зачем делать это нечеткое сопоставление постоянно? |
|||
34
vicof
02.12.22
✎
11:42
|
На всяких сайтах с кучей записей, пока не введешь первые несколько символов, тебе выборку вообще не показывают.
|
|||
35
Dmitrii
гуру
02.12.22
✎
11:58
|
(16) Так в итоге. Сколько шаблонов одновременно вводится пользователем? 400 или 30?
Пробовали применять полнотекстовый поиск? Если максимальное количество шаблонов (слов в запросе полнотекстового поиска) не превышает 32, длина строки поиска укладывается в 1000 символов, и при нечетком поиске результат укладывается в 300 слов, то можно попробовать. Создать список поиска. В привилегированном режиме и без получения представления и описания (для ускорения). Если все результаты поиска будут получены (СлишкомМногоРезультатов()=Ложь), то, обойдя этот список, сформировать массив который подсунуть в качестве параметра для отбора. ОФФ. Уже второй день обсуждения, а задача так и остаётся мутной и непонятной. Для оперативной работы копать регистр, в котором лежат данные за несколько лет, - очень странная затея. В подобных случаях либо регистр периодически чистят от старых данных (сворачивают), либо разделяют данные на разные таблицы - с оперативными (рабочими) данными и с архивными данными. Может имеет смысл поле Трекер сделать не строкой, а ссылочной сущностью (справочником, например), если один и тот же трекер в большом количестве записей регистра встречается. Поиск по относительно небольшому справочнику будет работать быстрее, чем по огромному регистру. Короче вариантов масса. Но чтобы рассуждать о них надо знать больше подробностей. |
|||
36
lamme
02.12.22
✎
15:21
|
а нельзя строку запроса сделать
Мойобъект.Мойреквизит ПОДОБНО "%" + &ОдноЗначение + "%" или Мойобъект.Мойреквизит ПОДОБНО "%" + &ОдноЗначение1 + "%" или Мойобъект.Мойреквизит ПОДОБНО "%" + &ОдноЗначение2 + "%" ? |
|||
37
Прохожий
04.12.22
✎
08:05
|
(33) Вечность - это мутная река
|
|||
38
Прохожий
04.12.22
✎
08:09
|
(35) Выясняется, что не все шаблоны приблизительные, есть точные совпадения. Тогда надо сначала отфильтровать точные, если их 99%, то приблизительно искать только оставшиеся. Будем пробовать так.
|
|||
39
Прохожий
04.12.22
✎
08:09
|
(35) Выясняется, что не все шаблоны приблизительные, есть точные совпадения. Тогда надо сначала отфильтровать точные, если их 99%, то приблизительно искать только оставшиеся. Будем пробовать так.
откуда точная постановка если Люди Руками вносят Всякую Хрень? |
|||
40
Смотрящий
04.12.22
✎
09:36
|
(39) Как выглядят в реальности полные треки и массивы которые отправляются для поиска ?
|
|||
41
Прохожий
05.12.22
✎
06:31
|
Как угодно, заказчик до конца не знает. Сегодня так, завтра так..
|
|||
42
lodger
05.12.22
✎
10:16
|
(41) это звучит как вечное сопровождение, а не разовая задачка.
|
|||
43
Dmitrii
гуру
05.12.22
✎
10:16
|
(41) >> Как угодно, заказчик до конца не знает. Сегодня так, завтра так.
Чтобы родить верное решение придётся требовать от заказчика сузить и конкретизировать требования. В любом другом случае оптимального решения получить не получится. Будет либо работать медленно (если пытаться наваять что-то универсальное "на все случаи жизни"), либо неудобно для пользователя (если загнать его в слишком узкие рамки). Возможно вообще придётся предусмотреть несколько способов/вариантов - на разные случаи - когда надо найти данные по чёткому совпадения, по нечёткому, по одному трекеру, по массиву трекеров. |
|||
44
lodger
05.12.22
✎
10:19
|
(43) дешевле всего отпустить психею вокруг строчек, и вернутся к архитектуре решения.
формализовать входы\выходы, согласовать процессы, автоматизировать ввод и обработку. тогда решение будет работать а) быстро б) удобно в) красиво. |
|||
45
Прохожий
05.12.22
✎
15:42
|
(42) Да...
|
|||
46
Прохожий
05.12.22
✎
15:47
|
Решение такое - сначала ищем полные соответствия исходным шаблонам (через =).
Потом ищем типовые ошибки пользователя: исходный шаблон плюс разные часто забываемые префиксы на полное соответствие (через =). Потом отбираем какие шаблоны найти не удалось. Дальше пускаем в ход ПОДОБНО как исходным шаблоном, так и с разными префиксами... потом ОБЪЕДИНИТЬ эту трагедию и выдать на экран что нашлось, а где руки совсем мимо клавиш пошли. На большее заказчик все равно не исхитрится. Надеемся что специально всякую кривизну забивать не будут. У пряморуких сотрудников поиски будут идти быстрее и выработка будет больше. Как-то так... |
|||
47
Прохожий
05.12.22
✎
15:48
|
На любую непонятную задачу можно придумать ещё более непонятный алгоритм.
|
|||
48
Смотрящий
05.12.22
✎
16:16
|
(46) Оно у тебя исполняться будет так же долго как описано.
Прими парадигму - меньше 3х символов - не ищем и разорви трек. |
|||
49
Прохожий
05.12.22
✎
16:25
|
(48) Нет, секунд 7 отрабатывает при условии что штук 10 через подобно ищутся, а остальные ошибки "частые".
Кроме того, систему можно сделать самообучающейся если ей сделать РС. Частые ошибки и научить делать синтаксический разбор "что на самом деле что". Просто нужна доп форма где система будет помнить какой юзер какие ошибки делал и в начале дня будет требовать ответить что он искал на самом деле. Этот же лог можно старшему менеджеру показывать. |
|||
50
lodger
05.12.22
✎
16:47
|
(49) ты на пустом месте изобрёл ещё одну АРМ.
|
|||
51
lodger
05.12.22
✎
16:48
|
+(50) тогда как было проще выкинуть первую и сделать нормально.
|
|||
52
Прохожий
06.12.22
✎
08:39
|
Оплата пропорционально усилиям. Поддерживать смогу только я и ещё один парень с Дальнего Востока.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |