gifts2017

FormEx. Быстрый поиск в поле ввода 2.1

Опубликовал Титович Эдуард (item) в раздел Администрирование - Поиск данных

Универсальный инструмент пользователя, требует FormEx  v2.0.5.0 - http://dorex.pro/?projects&formex&download
Реализация механизма быстрого поиска элемента по первым символам непосредственно в поле ввода.
Ограничения: Не работает для полей ввода многострочной части.

Внедрение: всунуть обработку "БыстрыйПоиск" в конфигурацию; при начале работы системы написать
ОткрытьФорму("Обработка.БыстрыйПоиск") - при таком запуске обработка проинициализирует необходимый ей дополнительный глобальный модуль.

 

26.09.2007 2.0 Поддержка полей большинства агрегатных типов, кроме типов "Счет" и "Документ".
01.10.2007 2.1 Исправлен принцип старта поиска, вследствие чего исчезли падения системы.
Доработана поддержка групп справочника.
09.10.2007 2.1.1 Исправлена ошибка в определении типа НомерДок и ДатаДок

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
DemoFindField211
.1190813878 47,67Kb
05.03.12
172
.1190813878 47,67Kb 172 Бесплатно

См. также

Подписаться Добавить вознаграждение

Комментарии

1. chirinna Арвачев (chirinna) 27.09.07 10:09
У меня получилось запустить только с одноуровневым справочником :-( Но идея классная! +1
2. Артур Аюханов (artbear) 27.09.07 11:25
Идея, конечно, не нова, но, в принципе, очень хорошо получилось, с некоторыми ограничениями :)
Ограничения/недостатки:
1) если в обрабатываемой форме или основном глобальнике есть обработчики событий ФормЕк, используемые в доп. глобальнике обработки, например, ПриНажатииКнопкиКлавиатуры, то механизм не будет работать :(
2) При поиске не видно, какие еще элементы с подобными наименованиями есть в справочнике :(

3) поиск по первым символам не всегда удобен. Намного удобнее, по опыту, поиск по подстрокам!
Простой пример - если нужно найти товар "электровыключатель", а он может быть заведен как "выключатель электрический" или ""электровыключатель" или в начале могут быть пробелы (менеджеры могут вводить как угодно, мы это все знаем). Удобно искать по строке "выключатель" или "выключ".
И существуют уже готовые реализации такой схемы.

Например, в своей демо-конфигурации "Репозитарий полезных классов 1С++/ФормЕкс"
http://www.1cpp.ru/forum/YaBB.pl?num=1169222935/156#156

Народ, реализована еще одна уникальная возможность

На базе набора классов "Поля выбора значения аля v8" от Алексея Диркса реализован универсальный механизм по созданию подобных полей выбора на любой форме без изменения кода самой формы.

Т.е. при открытии формы спец.класс анализирует атрибуты типа 1CEDIT. Если у данного атрибута значение имеет тип Справочник, то для данного поля появляется возможность обалденно быстрого выбора значений без открытия формы самого справочника.

Обратите внимание - поиск возможен по любым подстрокам, а не только по первым символам, как в примере или версии 1Cv8 :) !!


Для ДБФ баз работает только в разделенном режиме, для скуля в любом.

Использованы Перехватчик 1С++ 2.5 (нужно скачать новую сборку!!) и новый метод ФормЕкс ДобавитьАтрибут (также нужна последняя версия)

Выкладываю скриншот
Обратите внимание, что на самом деле модуль формы-примера пуст!!
И механизм не зависит от кода модулей форм и наличия в них соответствующих обработчиков событий ФормЕкс.
Вот скриншот http://www.1cpp.ru/forumfiles/Attachments/SelectInEditFieldAkaV8.jpg

ЗЫ в этой конфигурации еще много отличных универсальных механизмов, добавленных мной. Для ввода всего множества этих универсальных механизмов нужно всего лишь прописать пару строк в глобальнике конфигурации и все :)
Почитай указанную ветку.
3. Сhe Burashka (CheBurator) 27.09.07 12:32
> Для ДБФ баз работает только в разделенном режиме, для скуля в любом.
сам алгоритм проверяет в каком режиме база ДБФ и запускает "стандартный" вариант, если не удалось "продвинутый"...?
4. Артур Аюханов (artbear) 27.09.07 12:47
Нет, там используется схема быстрого поиска наименований в справочнике с помощью прямых запросов 1С++, которая для ДБФ работает только в разделенном режиме - ограничение ДБФ варианта 1С :(

Хотя в принципе можно сделать и для монопольного режима упрощенную схему, без быстрого поиска - типа поиск производим после набора несколько букв, например, после 3 символов уже можно выполнять поиск.

Но эта вариант будет годиться или для небольших однопользовательских баз или для разработчиков :)
Все равно большая/подавляющая часть пользователей работает в сетевой версии :)
5. chirinna Арвачев (chirinna) 27.09.07 13:39
Потестировал еще - ошибку по поводу иерархического справочника исправил. А в полях табличной части документов подбор и не должен работать? - было бы еще более интересно!
6. Сhe Burashka (CheBurator) 27.09.07 13:48
(4) это понятно.
ты не понял.
установил эту допвозможность.
пофиг где ее использую: должна сама разбираться - если это скуль и есть возможность задействовать "красоту" (т.е вдобавок к скулю есть Формекс и 1С++) - задействуем ее. Чего либо не хватает - работает по штатной схеме 1Сины.
есть такое?
7. Item (item) 27.09.07 15:03
(2) Artbear, будешь смеяться, но я до сих пор не юзаю 1с++.
Да, идея моя не нова, идея моя стара :), и над первой версией ты так не издевался.
8. Item (item) 27.09.07 15:09
(5) В полях табличной части существует одна трудность - определить, находится ли поле в режиме редактирования пользователем. Ищем...
9. Артур Аюханов (artbear) 27.09.07 17:30
(0) "Издеваюсь", надеюсь, в ироничном смысле сказано :)
Я же не ругаю обработку в целом :), а указываю ее отдельнее недостатки, которые могут помешать ее эксплутации, и показываю вариант, которые с моей точки зрения более функционален и удобен.
Основная цель - информирование народа о различных вариантах :)

А 1С++ просто нельзя не использовать, хотя бы с точки зрения повторного использования кода, т.е. классы и ООП.
Про все остальные навороты просто не говорю, слишком долго перечислять :)
10. Артур Аюханов (artbear) 27.09.07 17:31
(6) Ага, теперь понял.
Если ДБФ и работа в монопольном режиме, механизм просто ничего не делает :) и используется штатный механизм работы 1С, т.е. выбор через спец. кнопку и ручной поиск.
11. Item (item) 28.09.07 11:24
(9) Прасчаю :)
Насчет ограничений
> 1) если в обрабатываемой форме или основном глобальнике есть обработчики событий ФормЕк ...
Пробовал, не жалуюсь, хотя корявки в обработке событий есть, поскольку периодически система при поиске вылетает, не знаю почему.
> 2) при поиске не видно, какие еще элементы с подобными наименованиями есть в справочнике...
> 3) поиск по первым символам не всегда удобен. Намного удобнее, по опыту, поиск по подстрокам...
Согласен, все это минус, но как плюс я считаю как раз стандартный доступ к базе плюс простота внедрения,
которое может произвести и начинающий админ.
Вообще, "НайтиПоНаименованию" имеет и еще один существенный недостаток:
4) Косяки с группами в справочнике в случае, если справочник имеет свойство ГруппыВпереди = "1".
Вопрос с группами во многом неоднозначен, и я склоняюсь к тому, что-бы вообще
не использовать этот "быстрый поиск" к многоуровневым справочникам.
Более того, для "полноценного" внедрения механизма в конфигурацию, когда можно указать в метаданных признак "быстрого поиска" для отдельно взятого поля, использовал бы стандартное свойство "БыстрыйВыбор", для которого значение 1 является идеальным условием для работы моего алгоритма.
Но, к сожалению это вовсе сузит применение :(,
к тому по не понятным причинам FormEx не поддерживает атрибут БыстрыйВыбор в объекте АтрибутФормы.
12. Артур Аюханов (artbear) 28.09.07 11:28
(11) По поводу "БыстрыйВыбор" у тебя устаревшие сведения :)
Все нормально работает.
В показанном мной механизме как раз и используется сброс данного поля.
ЗЫ какая версия ФормЕкс у тебя?
14. Артур Аюханов (artbear) 28.09.07 11:34
(12)+ Версия у тебя 2.5
Точнее, какой у тебя номер сборки?
16. Артур Аюханов (artbear) 28.09.07 11:47
Используй 71.
Скоро Алексей еще одну выложит, я там еще кое-что по мелочи правил.
17. Item (item) 01.10.07 13:23
2.1 Исправлен принцип старта поиска, вследствие чего исчезли падения системы.
Доработана поддержка групп справочника.
18. Item (item) 09.10.07 11:20
Благодаря В.Кучмину обнаружена и исправлена ошибка в определении типа НомерДок и ДатаДок.
Как оказалось, формекс для этих полей выдает ТипЗначенияСтр() = ""
19. Артур Аюханов (artbear) 09.10.07 16:29
>> формекс для этих полей выдает ТипЗначенияСтр() = ""
Это как, расшифруй, плиз?
РасширениеФормы.ТипОбъекта/ПолныйТипОбъекта выдают "" ?
или еще что?
ЗЫ если в ФормЕкс ошибка, я или АльФ сможем ее поправить :)
20. Item (item) 10.10.07 12:57
(19) Для полей ввода НомерДок и ДатаДок метод
объекта АтрибутФормы.ТипЗначенияСтр() выдает пустую строку.
21. Артур Аюханов (artbear) 18.10.07 19:18
(20) Я этот баг исправил + еще несколько
Вышла новая версия ФормЕкс 2.0.5.77
Подробнее http://www.1cpp.ru/forum/YaBB.pl?num=1191404333/2#2
22. albochkov (Aleksey.Bochkov) 19.10.07 08:21
Вставил обработку в типовую ТиС..
При подборе контрагента договор устанавливается срабатывает только после 2-х нажатий Enter после окончания поиска.
Т.е. процедуры определенные для элемента диалога не отрабатывают после быстрого поиска...
Нельзя ли как-то это поправить?
23. albochkov (Aleksey.Bochkov) 19.10.07 08:27
На первый взгляд помогло изменение
Процедура ПослеЗакрытия()
Если Форма.Параметр = 1 Тогда
Сервис = СоздатьОбъект("Сервис");
Сервис.ЭмулироватьКлавиатуру("{F4}");
Иначе
Сервис = СоздатьОбъект("Сервис");
Сервис.ЭмулироватьКлавиатуру("{Enter}");
КонецЕсли;
КонецПроцедуры //ПослеЗакрытияФормы
24. albochkov (Aleksey.Bochkov) 19.10.07 08:29
Похоже фигурные скобки сайт не переваривает...
Процедура ПослеЗакрытия()
Если Форма.Параметр = 1 Тогда
Сервис = СоздатьОбъект("Сервис");
Сервис.ЭмулироватьКлавиатуру("(F4)");
Иначе
Сервис = СоздатьОбъект("Сервис");
Сервис.ЭмулироватьКлавиатуру("(Enter)");
КонецЕсли;
КонецПроцедуры //ПослеЗакрытияФормы
25. Артур Аюханов (artbear) 19.10.07 18:34
26. Item (item) 22.10.07 17:39
(24) Принял.
По правде, я уже это подправил, не выкладываю потому-что ковыряюсь еще с атрибутами многострочной части.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа