|
v7: Хитрый поиск | ☑ | ||
---|---|---|---|---|
0
247tsm
07.04.12
✎
04:05
|
Добрый день всем.
Наш бух хочет, чтобы я сделал для него хитрый поиск по справочнику Номенклатура по следующим критериям: 1) есть поле, в которое вводится искомый текст; 2) по нажатию кнопки должен производиться поиск сразу по всем колонкам, которые есть в справочнике Номенклатура (код товара, код аналога, наименование, характеристика...); 3) поиск должен находить искомое выражение в любой части слова (в начале, в конце, в середине); 4) если в колонках есть точки, пробелы, дефисы, запятые... они должны игнорироваться (например, если в какой-либо колонке есть "то,ва.р-ы", то при поиске слова "товары" мы должны стать на эту колонку); Т.е. полный аналог поиска по клавишам CTRL-F3 и F3 с добавлением условия п.4). Во как. Кто-нибудь может подсказать, как это сделать, особенно п.4)? Спасибо |
|||
1
nicxxx
07.04.12
✎
04:37
|
с божьей помощью и regex-пом справишься
|
|||
2
Web00001
07.04.12
✎
05:57
|
если должны игнорироваться конкретно пробелы дефисы запятые то да нужен regexp как организовывается в 1С ищи по форуму, уже проскакивало
|
|||
3
kosts
07.04.12
✎
07:06
|
Я бы попробовал или реквизит неопределенной длины и все текстовые поля без точек записать.
Или возможно в отдельном новом справочнике, в котором будут ссылка на номенклатуру и копии текстовых реквизитов без точек и запятых. Типовыми средствами можно обойтись. |
|||
4
МастерВопросов
07.04.12
✎
07:16
|
см. в ТиС встроенную обработку:
Обработка.ВыборИзСправочникаПоПодстроке там реализован поиск по произвольному фрагменту наименования одного из реквизитов номенклатуры, плюс хранится история поиска. Т.е. в окне поиска щелкаешь кнопку "вниз" и раскрывается список последних значений, по которым делался поиск. Пользователям очень нравится эта обработка, покажи её бух-ше и может писать ничего не надо будет. Вызывается из Формы-списка справочника "Номенклатура" по кнопке "Поиск" (внизу справа под самим списком). http://s019.radikal.ru/i616/1204/f9/72d7a372bcdf.jpg Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса =" |ТекущийЭлемент = Справочник.*.ТекущийЭлемент;" + РеквизитПоиска + " = Справочник.*." + РеквизитПоиска + "; |Группировка ТекущийЭлемент Без Упорядочивания Без Групп; |Условие(Найти(ВРег(" + РеквизитПоиска + "),ВРег(ПодСтрокаПоиска))>0); |Без итогов;"; ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"*",ВидСправочника); Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; |
|||
5
xenos
07.04.12
✎
07:22
|
Создать ключевое поле которое будет создаваться при записи элемента справочника.
Ключ=Строка(Реквизит1)+"@"+Строка(Реквизит2)+"@"+Строка(Реквизит2); Ключ=СтрЗаменить(Ключ,".",""); Ключ=СтрЗаменить(Ключ,",",""); Ключ=СтрЗаменить(Ключ,"-",""); Ключ=ВРег(Ключ); А потом уже искать по этому полю. |
|||
6
xenos
07.04.12
✎
07:27
|
можно это ключевое поле вывести на форму списка, а там уже уже использовать обычный поиск на панели инструментов.
|
|||
7
leshikkam
07.04.12
✎
07:51
|
(0) А можно и на прямых запросах
|
|||
8
Mikeware
07.04.12
✎
08:28
|
Присоединяюсь к leshikkam - на прямых запросах, взяв за основу класс Садовникова КоллекцияПолейВыбораЗначения, работы на пару-тройку часов.
|
|||
9
wertyu
07.04.12
✎
08:31
|
но лучше всего справочник привести из убожеского вида в читабельный как минимум
|
|||
10
Mikeware
07.04.12
✎
08:45
|
(9) да, убрать идиотство типа "то,ва.р-ы" необходимо.
подозреваю, что данное требование возникает в копмьютерных фирмах, где в наименование лепятся характеристики. В этом случае совет -вводить такие названия через шаблон-форму. |
|||
11
Web00001
07.04.12
✎
09:30
|
(8) А где взять этот класс?
|
|||
12
Mikeware
07.04.12
✎
10:51
|
||||
13
247tsm
07.04.12
✎
13:50
|
xenos, хорошая идея! Очень просто, но эффективно. И не нужны какие-либо доп. компоненты и прочее.
А еще какие есть идеи? |
|||
14
Злопчинский
07.04.12
✎
15:59
|
(13) не взлетит! ;-) ибо штатный алгоритм поиска такого требует точного написания искомого... и если два слова типа "народные товары" - то так и надо написать - "товары народные" - не найдет - это правлда лечится просто совсем в этой обработке.. а так конечно ничего лучшенечеткого поиска нет...
. http://infostart.ru/public/14255/ |
|||
15
Рэйв
07.04.12
✎
16:06
|
>>Наш бух хочет, чтобы я сделал
Все.Дальше не читал. ЧУВАК.смирись.Ты неудачнег. |
|||
16
Рэйв
07.04.12
✎
16:08
|
+(15)Кошерный одинесник сам упирает ГБ что делать.
|
|||
17
247tsm
07.04.12
✎
16:22
|
(16) Не согласен, т.е. абсолютно! Зачем программисту брать на себя ответственность за базу данных, ее заполнение и т.д.? Если я буду указывать ГБ, то во всех разборках он будет спихивать все на меня - я ж ему сказал, что делать! Программист должен быть помощником "сбоку" и не должен отвечать за БД. БД - это собственность БУХГАЛТЕРИИ и поэтому они несут за нее ответственность. Приняли программу, процедуру, отчет - все ответсвенность за все последствия несет тот, кто принял, т.е. ГБ.
Но мы говорим о хитром поиске. И меня интересуют идею по этому вопросу. |
|||
18
Рэйв
07.04.12
✎
16:25
|
(17)Ну ты как детский сад:-).
ГБ то она. И отвечает ОНА. По документам. Поэтому ту ейц можешь говорить хоть лететь на луну, ответственное лицо -ГБ |
|||
19
Злопчинский
07.04.12
✎
16:33
|
мну Бухша сказала что основной инсрумент главбуха НК и ПБУ, а не всякое Посо старыми релизами, глюками и прочим. На что я ответил - карандаш в руки, листы бумаги - и вперед! - мне проще будет...
. однако же щаз сижу обновляю далеко не типовую бухию... НЕ МОГУТ ОНИ НИЧЕГО без проги... не, может и могут, но тогда на отдел п родаж из 5 манагеров будет бухгалтерия человек 40... |
|||
20
Mikeware
07.04.12
✎
16:33
|
(18) он ничуть не лезет в компетенцию ГБ. Равно как и она не заставляет его делать какую-нибудь глупость. Его просят сделать чисто интерфейсный изыск. Вполне реальный, достаточно просто реализуемый.
|
|||
21
Рэйв
07.04.12
✎
16:35
|
(20)>>достаточно просто реализуемый.
Видимо НЕ Просто. :) |
|||
22
Mikeware
07.04.12
✎
16:36
|
(21) кому как.
|
|||
23
247tsm
07.04.12
✎
16:37
|
(18) Может быть, может быть. Попутно еще вопрос - влияет на скорость поиска длина дополнительного реквизита, как предложил xenos в (5)? Какой поиск будет быстрее - при длине реквизита, равной сумме длин реквизитов поиска, например 200, или при неограниченной длине?
|
|||
24
Mikeware
07.04.12
✎
16:38
|
(23) читай умные книжки.
|
|||
25
247tsm
07.04.12
✎
16:44
|
в (23) я имел в виду не неограниченную дляну, а произвольную длину. При заданной длине, например 200, комп всегда! просматривает все 200 символов. А если длна не ограничена, то все равно конкретные данные фиксированной длины и частенько, если не всегда сумма их длин даже в базе из 1000 строк будет меньше чем 200*1000=200000 символов. Поэтому и спрашиваю, что выбрать - фиксированную длину или нефиксированную?
|
|||
26
Mikeware
07.04.12
✎
16:46
|
(25) я тебе ровно о том же...
читай книжки по организации хранения данных, по ограничениям конкретных реализаций - и такие вопросы не будут возникать. |
|||
27
247tsm
07.04.12
✎
16:48
|
Ок
|
|||
28
247tsm
08.04.12
✎
01:13
|
Я сделал, как предложил в (5) xenos. Все получилось.
Всем спасибо |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |