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

15.06.10

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

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

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

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

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

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

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

См. также

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

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

10 стартмани

29.04.2015    22471    57    Gvozdod    8    

16

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

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

1 стартмани

23.04.2014    169058    1889    Alexoniq    1603    

499

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

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

1 стартмани

04.09.2013    33521    61    O-Planet    78    

49

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

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

1 стартмани

13.08.2013    22001    Reptile    5    

36

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

Встала недавно задача для одной организации, которая все еще на 1С 7.7 немного автоматизировать работу отдела продаж. А именно уйти от ручного заполнения договоров, сделанных юристами в MS Word. Договора от разных фирм и разного назначения отличались. Переводить их в таблицы 1С очень не хотелось и нашел способ прямо в файлах Word сделать небольшие дополнения, чтобы можно было печатать, используя именно эти заготовки юристов.

1 стартмани

14.07.2013    27799    56    adamx    11    

14

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

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

1 стартмани

21.02.2013    18433    36    MarSeN    14    

17

Инструментарий разработчика Программист Платформа 1С v7.7 1C77 Абонемент ($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    36468    51    venger    7    

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

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

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


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