Организация быстрого подбора

15.06.10

Разработка - Инструментарий разработчика

Организация быстрого подбора, что бы отфильтрованные позиции справочника "вылетали" по нажатии символов, причём не важно, в каком позиции начинается слово в названии элемента.

Скачать исходный код

Наименование Файл Версия Размер
Заполнение справочника индекса
.ert 10,00Kb
86
.ert 10,00Kb 86 Скачать бесплатно
Организация поиска
.ert 11,50Kb
38
.ert 11,50Kb 38 Скачать бесплатно

Была поставленна такая задача. Начал думать как бы организовать этакий полнотекстовый поиск по справочнику. Всякие запросы с LIKE-ами отмёл сразу, за неуниверсализм и зависимость от условий. Да и не сможет сделать поиск внутри строки по словам. Хотелось универсального, без компонент и независимо от DBF или SQL.

Идея метода такова: создаём справочник-индекс у в которого будет два поля - уникальное слово и коды элементов. Пишем обработку которая, собирает все уникальные (не цифры и не менее 3 символов) слова в наименованиях справочника элементов и в каких кодах это слово встречается. Коды перечисляются через запятую. Потом делаем непосредственно индекс - индексом будет строка из всех слов, через точку запятой, в той последовательности, как у нас хранится в справочнике-индексе.

При нажатии на кнопку, перехватываем её (например formex.dll) и простой операцией поиска в индексе-строке с разделителем впереди (что бы искалось с начала слова, а ни любое вхождение внутри слов, хотя для нескольких букв можно уже и внутри) ищем позицию, считаем сколько разделителей перед найденной позицией. По количество разделителей - получаем позицию в справочнике-индексе (который кстати можно загрузить в таблицу значений предварительно) - во втором поле которого перечисленны коды элементов справочника в которых есть слово начинающеяся с этой буквы или некоторого количества букв (советую начинать с двух-трёх). Потом обрезаем строку индекс по это слово и исчем дальше вхождения и тут рекурсия. Потом пробегаемся по списку кодов, которые мы собираем и вытаскиваем уже сами элементы. Кстати этот способ можно применять для нескольких слов в поиске ища по словно - можно искать такого типа "сап 42".

Данный способ пробовался на справочнике товаров свыше 12 тысяч позиций. Собирание индекса таблицы, самый долгий процесс - порядка нескольких секунд, его можно делать, по событию изменения наименований или по расписанию. Поиск по индексу происходит достаточно шустро - меньше секунды. Кстати на удивление немного получается в справочнике-индексе строк, по сравнению со справочником источником. Единственно я не решил проблему с перехватом нажатий клавиш с помощью formex.dll. Срабатывает весьма не стабильно. Может кто нибудь предложит другой способ. Предлагаю обработки, но они не рабочие на стандартных конфах, но доточить на любой справочник - не представляется никаких проблем (внутри чистая "математика", названия справочников можно изменить и всё заработает)

Может быть способ кому нибудь пригодится.

См. также

Консоль запросов

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Консоль запросов к базе SQL, не требующая внешних компонент

10 стартмани

29.04.2015    21641    54    Gvozdod    8    

15

StartManager 1.4 - Развитие альтернативного стартера

Инструментарий разработчика Платформа 1С v7.7 Платформа 1С v8.3 Абонемент ($m)

Очередная редакция альтернативного стартера, являющегося продолжением StartManager 1.3. Спасибо всем, кто присылал свои замечания и пожелания, и тем, кто перечислял финансы на поддержку проекта. С учетом накопленного опыта, стартер был достаточно сильно переработан в плане архитектуры. В основном сделан упор на масштабируемость, для способности программы быстро адаптироваться к расширению предъявляемых требований (т.к. довольно часто просят добавить ту или иную хотелку). Было пересмотрено внешнее оформление, переработан существующий и добавлен новый функционал. В общем можно сказать, что стартер эволюционировал, по сравнению с предыдущей редакцией. Однако пока не всё реализовано, что планировалось, поэтому еще есть куда развиваться в плане функциональности.

1 стартмани

23.04.2014    166064    1868    Alexoniq    1596    

496

Tray Informer

Инструментарий разработчика Платформа 1С v7.7 Платформа 1С v8.3 Россия Абонемент ($m)

Согласитесь, что окно стандартное сообщений в 1С иногда приносит больше неудобств, чем пользы. И тем более разные "Предупредить"... Что с этим окном только не делают! Его отцепают от формы, делают маленьким, умудряются спрятать за границы экрана. А потом звонят программистам с претензией, что документ почему-то не проводится, отя ничего и не пишет. У вас такого не было? А вот у нас было и не раз )))

1 стартмани

04.09.2013    32944    61    O-Planet    78    

49

Изменение структуры баз 1С 7.7 без долгой реструктуризации. Часть 1. Справочники

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

На днях встретил вопрос на форуме про возможность внесения изменений в конфигурацию без долгого сохранения в рабочей базе большого объема. Вот решил поделиться опытом, как это делал я. База у нас была объемом порядка 120 Гб. К базе обращался сайт в режиме 24/7, поэтому важно было быстро сохранять изменения и желательно без последующего монопольного запуска для восстановления индексов и процедур и без отключения пользователей от базы. Это первая часть статьи и посвящена она справочникам. С одной стороны - это самый простой объект, с другой стороны, именно про справочник спрашивалось на форуме. Если статья будет востребована, то я напишу аналогичные про документы, регистры и может еще что.

1 стартмани

13.08.2013    21263    Reptile    5    

35

v7.7 1CDialogControls: Инструмент в помощь разработчику на 7.7.

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Давным давно, когда я еще плотно писал на 7.7 работа с формами была мучительной и неудобной. Приходилось каждый элемент выкладывать, выравнивать на форме ручками, прописывать код в модуле. Иногда при разработке очередной формы приходила в голову мысль: "а где-то я уже похожее делал..." и начинался мучительный поиск подходящего кода в своих запасах........

1 стартмани

21.02.2013    18065    35    MarSeN    14    

16

[Разработчику] Любая таблица значений в OLAP

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Анализируем различные данные в 1С, используя OLAP-технологии со всеми прелестями. Т.е. наглядное отображение данных, быстрые расчеты, горизонтальные и вертикальные группировки любой вложенности, удобная фильтрация, Drag'n'Drop и ещё много приятных вещей от MS. Обработка на входе принимает практически любую таблицу значений (ТЗ в которой колонкам указаны типы значений, строка, число и т.п.), на выходе имеем на форме 1С сводную таблицу и график по этой ТЗ, с которой работаем, как и в Excel со сводной таблицей и диаграммой. Взял за основу разработку «OLAP Анализ счёта» ( http://infostart.ru/public/14964/ ) от JohnyDeath и переделал под любую ТЗ. Опционально используется «Прогресс бар для 1С 77» (http://infostart.ru/public/14061/ ) от Gmix.

1 стартмани

21.12.2012    36130    51    venger    7    

23

Библиотека кода 1С 7.7 (накопленная за 8 лет)

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Весь код на 1С 7.7, собранный для повторного использования за 8 лет работы.

10 стартмани

25.11.2012    35018    248    adhocprog    51    

70
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Ёпрст 1063 15.06.10 13:56 Сейчас в теме
Как то всё через одно место и.. медленно.

Вот это решение посмотрите:
http://www.rikcenter.ru/solutions.php

которое сделано на основе
http://www.script-coding.info/svcsvc.html
+
2. Ёпрст 1063 15.06.10 14:04 Сейчас в теме
+1
Всякие запросы с LIKE-ами отмёл сразу, за неуниверсализм и зависимость от условий


Это вы зря, посмотрите ЭТО универсальное решение для поиска:
http://www.1cpp.ru/forum/YaBB.pl?num=1211491690
+
3. CheBurator 3119 16.06.10 02:21 Сейчас в теме
4. Boog 50 16.06.10 10:25 Сейчас в теме
5. orefkov 1152 16.06.10 10:45 Сейчас в теме
Судя по описанию, похоже на реализацию полнотекстового поиска средствами 1С.
Ну, может быть, когда-то Сергей Брин с такого же велосипеда начинал...
Хотя, like он как-то проще, да и не встречаются на 1С такие справочники, чтобы like не вытянул объемы перебора.
+
6. DeAmon2K 3 16.06.10 14:19 Сейчас в теме
Like не сможет найти по началу третьего слова
+
7. Ёпрст 1063 16.06.10 14:23 Сейчас в теме
(6) Да ну ?? :))0
Like %вася% найдет Васю, где бы он не был в строке (или её части)..
+
9. DeAmon2K 3 17.06.10 12:59 Сейчас в теме
(7) а вот как раз в ЧАСТИ и не надо
(8) НайтиПоКоду моветон? 8-\ а что не моветон?
+
10. Ёпрст 1063 17.06.10 14:55 Сейчас в теме
(9) Не вопрос, Like % вася% , так устроит ?
+
8. Ёпрст 1063 16.06.10 14:25 Сейчас в теме
А у вас 2-ая избыточность.. На поддержание такого справочника нужно как минимум тригер вешать, чтоб в актуальном состоянии всегда был.. да и.. затратно всё это и код ни разу не оптимален..Да и найтиПоКоду - моветон...
+
11. Noy 1076 17.06.10 21:26 Сейчас в теме
а мой велосипед в коллекцию возьмете? :D
+
12. dolter 119 19.12.10 14:51 Сейчас в теме
Оставьте свое сообщение