Универсальная обработка поиска и отбора по нескольким подстрокам

12.05.09

Задачи пользователя - Поиск данных

Универсальная обработка поиска и отбора по нескольким подстрокам
в реквизитах справочника (в качестве разделителя пробел),
удобно добавлять в базы,
можно делать подборы во "Множественных фильтрах" по кнопочке 5точек и т.д.!

Скачать файл

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

Наименование По подписке [?] Купить один файл
Poisk_1_4.7z
.1212792021 21,48Kb
214
214 Скачать (1 SM) Купить за 1 850 руб.
Poisk_1_3.7z
.1212474572 16,66Kb
195
195 Скачать (1 SM) Купить за 1 850 руб.
Poisk_1_9.7z
.1220273002 25,37Kb
159
159 Скачать (1 SM) Купить за 1 850 руб.
Poisk_2_0.7z
.1242112898 25,81Kb
90
90 Скачать (1 SM) Купить за 1 850 руб.

// Версия: 2.0
// Авторы: Пилия В.Р. - PVR и Кузнецов Ю.А. - unnamed
// Особая благодарность разработчикам ВК 1С++, 1sqlite и FormEx™

Универсальная обработка поиска и отбора по нескольким подстрокам
в реквизитах справочника (в качестве разделителя пробел),
удобно добавлять в базы,
можно делать подборы во "Множественных фильтрах" по кнопочке 5точек и т.д.!

При наличии ВК 1С++ и FormEx™ или 1sqlite,
прямые запросы SQL,
для DBF в не монопольном VFPOLEDB,
в монопольном 1sqlite(и не монопольном, при отсутсвии 1С++ или VFPOLEDB) ,
ТабличноеПоле и прочие полезности :)

В остальных случаях запрос 1С и ТаблицаЗначений!

Для запросов к DBF через VFP OLEDB, установить драйвер VFP Ссылки:
драйвер FoxPro для OLE DB: http://download.microsoft.com/download/b/f/b/bfbfa4b8-7f91-4649-8dab-9a647636036 5/vfpoledb.exe
пропатченный файл от Uzhast: http://uzhast.fatal.ru/vfpoledb/

Ссылки на ВК 1С++, FormEx™ и 1sqlite:
http://www.1cpp.ru/index.php/Image:Icpp-latest.rar (это ссылка на страницу!)
http://www.dorex.ru/?projects&formex&download
http://code.google.com/p/sqlite1c/downloads/list

В качестве реквизитов поиска выступают реквизиты справочника с типами:
Справочник, Перечисления, Строка не 0 длины - поиск по нескольким подстрокам (разделитель пробел),
Число, Дата - поиск по множеству значений (разделитель пробел) чисел и дат,
с условиями <,>,<=,>=,<> и соединением по:
по умолчанию AND,
"AND" или "И" = &,AND,and
"OR" или "ИЛИ"= @,OR,or
(для обозначения Пустых дат, добавлен метасимвол " или аналог "").

Не поддерживается поиск/отбор по:
Строкам не ограниченной длины, периодическим реквизитам.

Примечание!
Кнопка (копируемая на форму) "Отбор по подстрокам", делает отбор по реквизиту текущей колонки,
если нет возможности сделать по нему, то отбор по "Наименованию"


Изменения в Версии 1.2:
[+] Поиск/отбор подстрок и "СписокПолей" по: Перечислениям и
реквизиту "ОсновноеСвойство" (например в Номенклатуре и Контрагентах ТиС) типовых конфигураций.
[+] Выбор множества значений отмеченных галочками, кнопкой "Выбрать ВСЕ".

Изменения в Версии 1.3:
[!] Исправлена ошибка, возникающая при выполнении кода запрос1С.
[*] Переименованы кнопки "Выбрать" в "Показать", "Выбрать ВСЕ" в "Выбрать".
[+] Добавлена возможность развернуть окно обработки на весь экран при наличии ВК FormEx™ 2.0.5.86

Изменения в Версии 1.4:
[+] Поиск по множеству значений (разделитель пробел) чисел и дат,
с условиями <,>,<=,>=,<> и соединением по:
по умолчанию AND,
"AND"= &,AND,and
"OR"= @,OR,or
(для обозначения Пустых дат, добавлен метасимвол " или аналог "").
[+] При наличии ВК 1С++ данные отображаются в ТП.
[+] Только в ТП: добавлено контекстное меню автоширина и ширина по умолчанию при вызове на скроллере ТП (горизонтальном или вертикальном).
Автоширина равнозначна двойному щелчку мыши на разделителе колонок в заголовке ТП при нажатом shift.
[+] Сортировка колонок
(ТП: на заголовке ЛКМ=сортировка,ПКМ=опция в списке меню и кнопка "Меню",
ТЗ: только кнопка "Меню").
[+] Добавление/Удаление отображаемых полей
(ТП: на заголовке ПКМ=опция в списке меню и кнопка "Меню",
ТЗ: только кнопка "Меню").

Изменения в Версии 1.5:
[!] Испралены баги.

Изменения в Версии 1.6:
[-] при вызове из журнала и поиске в колонке, в которой не находилось значение и попытке дальнейшего поиска по наименованию выходила ошибка.
[*] совместимость с новой версией Formexa, в которой работает процедура ПриИзмененииРазмеровОкна с сделанными насильно модальными окнами.

Изменения в Версии 1.7:
[*] Оптимизирован поиск по Перечислениям.
[+] Показ Количества найденых элементов.
[+] Поддержка 1sqlite (в монопольном режиме DBF 1С, запрос через 1sqlite).

Изменения в Версии 1.8:
[-] При поиске в Числовых полях с параметром типТекст (Например:"тов") была ошибка, теперь выводится сообщение и преобразование в Число 0 !
[-] Поиск по рекв. "ОсновноеСвойство", был баг с построением запроса.

Изменения в Версии 1.9:
[+] Сохранение показываемых полей (надоело каждый раз добавлять ;) ).
[+] Периодические реквизиты.
[-] табллица для SQL исправлена на _1sconst.
[-] при подборах в сохраненные поля попадало поле "пометка".
[-] поправлен поиск переодических реквизитов для SQL ч/з 1c++, выдавал ошибку по функции substr
[-] восстановлена работа поиска по активной колонке при вызове из формы справочника
[+] добавлена возможность работы без вызова программным путем, при простом открытии внешней формы.
Практического смысла пока не имеет, кроме как "посмотреть список элементов на экране",
но удобно, если нужен поиск по справочнику, в форме которого нет кнопок поиска и т.п.
[!] Теперь в монопольном режиме, тоже используется FOXOLEDB, если он есть
для возможности работать в монопольном режиме скачиваем //infostart.ru/profile/2905/projects/2418/
Сам VFPOLEDBSetup.msi http://www.microsoft.com/downloads/details.aspx?FamilyId=E1A87D8F-2D58-491F-A0FA-95A3289C5FD4&displaylang=en
[+] Поиск и показ колонок по строкам неогр. длины, только для SQL и SQLite!
[+] Возможность выбора даты для периодических реквизитов, через "Меню", по умолчанию РабочяДата().

Изменения в Версии 2.0:
[-] восстановлена работа кнопок Показать и Открыть.

Установка возможна двумя способами (можно совместно):

Скопировать "Poisk.ert" в Каталог ExtForms базы данных.

Способ 1:

Работает стандартная кнопка "Поиск" в тип. конфигурациях
и кнопочки от unnamed.

В глобальном модуле заменяем Процедуру глПоискПоПодстроке
//******************************************************************************
// глПоискПоПодстроке(Конт, СписокПолей = "",ДопПараметр="_Поиск_")
//
// Параметры:
// Конт - контекст формы списка справочника,
// СписокПолей - необязательный параметр, строка,
// содержащая список идентификаторов строковых реквизитов ограниченной длины,
// по которым может осуществляться поис, разделенных запятыми.
// ДопПараметры - кнопка
// Возвращаемое значение:
// Нет
//
// Описание:
// Вызывает обработку поиска элемента справочника по подстроке,
// если нашли, то или позиционирует форму списка на найденном элементе,
// или если форма в режиме выбора, то производит выбор.
//
Процедура глПоискПоПодстроке(Конт, СписокПолей = "",ДопПараметр="_Поиск_") Экспорт
СписокПараметров = СоздатьОбъект("СписокЗначений");
СписокПараметров.ДобавитьЗначение(Конт.Вид(), "Вид");
СписокПараметров.ДобавитьЗначение(СписокПолей,"СписокПолей");
СписокПараметров.ДобавитьЗначение(Конт,"Конт");
СписокПараметров.ДобавитьЗначение(ДопПараметр,"ДопПараметр");
ОткрытьФормуМодально("Отчет",СписокПараметров,КаталогИБ()+"\ExtForms\Poisk.ert");
КонецПроцедуры // глПоискПоПодстроке()

Способ 2:

В глобальном модуле должна присутствовать переменная:
Перем глОбъект Экспорт; // Объект, передаваемый в качестве параметра при программном вызове формы

Скопировать кнопочки "Поиск" и "Отбор по подстрокам" в формы справочников (ДляВыбора, ФормаСписка, ДляПодбора)
и снять галочки, "сделать недоступным" и "невидимым".

ВСЁ Пользуемся ;)

См. также

Поиск данных Платформа 1С v7.7 Абонемент ($m)

Если у пользователя конфигурации 1С 7.7 сложный интерфейс (или несколько интерфейсов), в котором проблематично найти нужный элемент метаданных - константу, справочник или документ (журнал документов), отчет или обработку, в этом случае поможет универсальный навигатор - органайзер по элементам метаданных, позволяющий легко найти нужный пользователю вид объекта метаданных в отсортированном по алфавитному порядку списке идентификаторов, синонимов или даже комментариев объектов метаданных. Данная универсальная обработка позволяет выбрать и открыть необходимую форму списка и форму элемента. Для доступа к нужному объекту в конфигурации у пользователя должно быть настроено разрешение в правах пользователя, а ссылка в его интерфейсе пользователя в конфигурации не обязательна.

1 стартмани

09.10.2021    5032    0    ksnik    1    

7

Поиск данных Чистка данных Логистика, склад и ТМЦ Программист Оперативный учет 7.7 1С:Торговля и склад 7.7 Управленческий учет Абонемент ($m)

Простая и удобная обработка предназначена для поиска и исправления задублированных (повторяющихся) номенклатурных штрихкодов справочника Единицы. Также она даёт возможность посмотреть номенклатурные остатки. Полезна в случаях, когда номенклатура сопоставляется по штрихкоду с другими внешними источниками, а именно с модулем "Обмент ГИСМТ".

1 стартмани

19.11.2020    7879    1    Kuzya_brаtsk    4    

8

Поиск данных Программист Платформа 1С v7.7 Платформа 1С v8.3 Конфигурации 1cv8 Конфигурации 1cv7 Россия Абонемент ($m)

Для 1с77 ТиС 9.2 отчет - выборка всех сотовых телефонов из справочника контрагенты для передачи в СМС рассылку. Для 1с8 Обработка с алгоритмом распознавания номера телефона из строки.

1 стартмани

20.03.2020    5465    5    AlexHelmer    1    

2

Поиск данных Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

Внешняя обработка предназначена для поиска и подробного анализа дублей.

2 стартмани

29.04.2015    19006    53    Pirat-37    1    

0

WEB-интеграция Поиск данных Платформа 1С v7.7 1С:Торговля и склад 7.7 Автомобили, автосервисы Абонемент ($m)

Внешняя обработка для поиска автозапчастей по каталожному номеру

1 стартмани

26.01.2015    15056    11    kras_71    6    

2

Поиск данных Бухгалтер Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Абонемент ($m)

Поиск контрагентов по списку ИНН, переноса в группу и формирования оборотов по счетам с субконто "Контрагенты"

10 стартмани

16.08.2014    17044    2    GSoft    1    

1

Поиск данных Программист Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Процедура контекстного поиска в журнале документов.

18.04.2014    11602    cushe    3    

5

Поиск данных Программист Платформа 1С v7.7 Абонемент ($m)

Обработка + консольная утилита (exe). Работает с использованием FormEx.dll (Алексей Фёдоров aka АЛьФ), strmatch (Ракунов Александр aka skorp) и 1sqlite (Александр Орефков). Выполняет быстрый нечеткий поиск по справочнику (по умолчанию - номенклатуры) с выводом наиболее похожих позиций в выпадающий список. Работает на 1с 7.7. Тестировалось на server 2003 в терминалах, в файловой БД. Предполагаемые достоинства: пример (более) «адекватного» (по меркам автора на данный момент) поведения поисковой строки (реализовано при помощи консольной утилиты, работающей через winapi – исходники прилагаются (писалось в lazarus)) и удобной навигации по списку, во время ввода. Является, скорее, примером для реализаций собственных адаптированных поисковых решений.

1 стартмани

30.12.2013    22190    34    Jill    13    

12
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Bezborodoff 20.06.08 18:50 Сейчас в теме
Помоему 1.4 не совсем работает...
2. slavapil 132 21.06.08 11:19 Сейчас в теме
Bezborodoff, указывайте что именно не работает!
Сделаем ...
3. Shagan 25.11.08 08:49 Сейчас в теме
не открывается окно Элементы, в чем косяк?
4. slavapil 132 25.11.08 09:00 Сейчас в теме
5. Dmitry100 09.02.09 16:30 Сейчас в теме
Мне кажется - это гениальная вещь!
6. slavapil 132 09.02.09 17:06 Сейчас в теме
7. Viska 01.03.09 13:58 Сейчас в теме
8. Близнец 24.04.09 13:16 Сейчас в теме
Молодцы! Спасибо! Как раз начал искать решение как ускорить поиск в справочниках и тут нашел вашу разработку. Очень помогла. Немного потестировал:
справочник 2000 записей, по сети около 12 пользователей, база DBF, поиск по наименованию -
запрос 1С (стандартный поиск) - 16-16,5 сек.
перебором справочника 1С - 7,7 - 8,3 сек.
эта обработка - 0,2 сек. (правда версия FormEx™ старая и результаты не отобразились, но не думаю что будет намного больше).

P.S. Просьба авторам - т.к. разработка не улучшалась уже пол года (видать достигла предела по необходимому функционалу), включить последние изменения после версии 1,9 по чати максимизации окна (на www.1cpp.ru с номером 36). Там убраны глюки.
9. slavapil 132 24.04.09 14:48 Сейчас в теме
Спасибо )))
Кому нужны новые версии просим исскать здесь:
http://www.1cpp.ru/forum/YaBB.pl?num=1211491690
10. jetcom 03.05.09 06:03 Сейчас в теме
Иногда не позиционирует при выборе найденного элемента на нем, а показывает пустую группу элементов, а при повторном поиске уже все нормально.
11. jetcom 03.05.09 06:11 Сейчас в теме
Причем, показывает пустую группу на один уровень выше, которая на самом деле не пустая, после этого нужно явно ее выбрать и при повторном поиске нормально позиционирует на выбранном элементе. Может из-за большой вложенности? Правда, в моем случае элемент находится всего лишь в третьей по глубине подгруппе элементов номенклатуры.
12. slavapil 132 03.05.09 11:12 Сейчас в теме
(11)
Странно, у меня такого небыло.
Можете выслать тестовую конфу?
13. jetcom 03.05.09 15:50 Сейчас в теме
Конфу не могу, - вышлю скрины и попробую еще потестить в отладчике...
Но выскакивает такое через раз практически.
14. Dmitry100 11.05.09 21:03 Сейчас в теме
Есть такая неприятность у меня. Результатом поиска является список позиций номенклатуры. Если я там курсором либо мышкой выберу чего-нибудь и тыкну кнопку "Открыть элемент", то оно всегда открывает верхний в списке, а не текущий.
15. slavapil 132 12.05.09 08:33 Сейчас в теме
(14) да действительно.
Исправлю
16. slavapil 132 12.05.09 11:23 Сейчас в теме
Работа кнопок востановлена в версии 2.0
17. Dmitry100 12.05.09 20:44 Сейчас в теме
Большое человеческое спасибо!
18. for_temp 28.05.09 19:01 Сейчас в теме
Большое ЧЕЛОВЕЧИСКОЕ СПАСИБО!
19. Alexander08 07.12.21 12:21 Сейчас в теме
Не работает



SEL ECT Спр.ID as [элемент $Справочник.Контрагенты],Спр.Descr as наименование,Спр.Code as код
FR OM
	$Справочник.Контрагенты as Спр 

WHERE LOWER(Спр.Descr) LIKE '%иван%' ORDER BY Спр.DESCR
SEL ECT Спр.ID as [элемент_1c_type_Справочник_1c_dot_Контрагенты],Спр.Descr as наименование,Спр.Code as код
FR OM
	sc124 as Спр 

WHERE LOWER(Спр.Descr) LIKE '%иван%' ORDER BY Спр.DESCR
Ошибка в запросе:
SELECT Спр.ID as [элемент $Справочник.Контрагенты],Спр.Descr as наименование,Спр.Code as код
FR OM
	$Справочник.Контрагенты as Спр 

WH ERE LOWER(Спр.Descr) LIKE '%иван%' ORDER BY Спр.DESCR
Показать
Оставьте свое сообщение