Решено Поиск в окне выбора

  • Автор темы beloff
  • Дата начала
B

beloff

Всем привет. Вопрос следующий: можно ли организовать (и как, если можно) нормальный поиск в окне выбора. Описание задачи: при оформлении заказов есть куча контрагентов (есть отдельная вьюха где они хранятся по категориям - плательщик или получатель платежа 2.jpg ), юзерам лень скролить в поисках нужного, хотят чтобы поиском как в представлении искало. Окно вызывается
PickListCollection(PICKLIST_CUSTOM если это важно. 1.jpg
там идет Show Single Category "получатель платежа"
Если название написать полностью так, как написано с кавычками и нажать Search Within Category - все нормально найдет. Если нажать Search All - ничего не найдет. Если производить поиск, например, по полю УНП, а не полному названию - ничего не найдет даже если нажать Search Within Category. Вопрос: как нибудь можно организовать нормальный поиск в окне, а не изврат? В представлении ковырялся, настройки столбцов менял, ничего не получилось. Прошу совета. Заранее спасибо.
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
1) сделай первый столбец сортировочным и тогда достаточно будет просто писать название (без Ctrl+F)
2) сделай рядом с кнопкой вызова окна небольшое поле куда достаточно вписать часть названия и по ентеру сразу открываться промт с названиями похожими на то, что ввели
 
B

beloff

сделай первый столбец сортировочным и тогда достаточно будет просто писать название (без Ctrl+F)
он и так сортировочный (Ascending). Название приходится писать с кавычками, Ctrl+F в окне не вызывается сочетанием клавиш, только когда начинаешь выбирать - вылазит окно поиска
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Можно организовать нормальный вид. Без кавычек.
В окне поиска написано "Начинается с...", а не "Содержит..."
И если название начинается с кавычек - следовательно...

Ну я не встречал чтоб искали по названию контрагента. Обычно ищут по ИНН
 
D

divankin

Как вариант - вообще откажитесь от представления. Сделайте поиск с подсказками - ввел пару букв и тебе уже начали подсказывать значения. Как в Яндексе :)
Показывайте окно с двумя полями: одно сверху для поискового запроса, второе ниже листбокс со списком значений. При каждом изменении значения верхнего поля заново вычисляется список значений в поле снизу. Так вы сможете делать поиск по любому набору полей в документах
 
B

beloff

Divankin
че-то не совсем идею догнал.
 
30.05.2006
1 345
12
BIT
0
если это важно.. там идет Show Single Category
О! Ещё как важно.
В Single Category обыкновенный Start with/Search text SearchAll не работает. Оно и понятно: 1-я сортированная колонка УЖЕ использована

Зато, если отсортировать и вторую колонку в этой view, то по ней будет работать Start with/Search text Search within category
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
2) сделай рядом с кнопкой вызова окна небольшое поле куда достаточно вписать часть названия и по ентеру сразу открываться промт с названиями похожими на то, что ввели

чем этот вариант не угодил?
 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
Интересен такой вариант: набираешь в поле, чуть ниже поля автоматически всплывает список с похожими вариантами, и при продолжении набора варианты автоматом корректируются; список кликабелен, т.е. выбранное значение вставляется в поле.
Такое возможно сделать в Клиенте? JS или Java?
 

Darkhan

Green Team
14.12.2012
99
2
BIT
0
VladSh, полноценного autocomplete на клиенте не получилось, но как альтернатива: (там единственная форма)
 
A

alexas

VladSh - в клиенте пользуюсь примерно так -
поправил базу Darkhanа

P.S. Кстати, если в отборе из списка использовыть @Contains вместо @Begins - будет искать совпадения и в середине слова.
Можно скомбинировать @Contains и @Begins для поиска слова в предложении (если список состоит из предложений).
 

Вложения

  • hardcoreAutocomplete.zip
    31,5 КБ · Просмотры: 376

Darkhan

Green Team
14.12.2012
99
2
BIT
0
alexas, закрыть кнопку выбора у combobox-a с помощью layer, это очень ново для меня! хотя и реальный хардкорр)))
 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
Darkhan, alexas
Круто, спасибо! :)

С @Contains не получилось, не берёт варианты изнутри слов.
Ещё хотелось бы ввод not case sensitive.
А сильно хочется переход к листбоксу по клавише Down, это возможно не привлекая WinAPI? А то у меня на js что-то не выходит.

Получилось: сделал Layer и поместил на него 2-й листбокс, в результате оно теперь появляется как бы сверху формы.
Хотелось бы знать, есть ли подводные камни у такого решения? Влияет ли разрешение монитора и т.п. на положение Layer'а на форме? Не хотелось бы чтобы оно съехало куда-то вбок.
 
A

alexas

VladSh, Layer не съезжает, от разрешения монитора не зависит. За все время пременения проблем не видел.
Я еще скрываю иногда Laye-ом нижнюю полосу прокрутки календарного вида, если он внедрен на форму.

Поместить листбокс на Layer классная мысль, спасибо.

Давайте публиковать интересные UI "фишки" - то, что для тебя очевидно - может-быть откровением для других. Я уже призывал к этому раньше, но как-то не получил поддержки :) . А,то делаются классные базы, с огромным функционалом и чудовищным UI. Все-таки софт должен быть не только функциональным но и удобным и красивым - большой поклон продукции Aple времен Джобса (не реклама).

изменено на case insensitive
 

Вложения

  • hardcoreAutocomplete.zip
    31,7 КБ · Просмотры: 314
A

alexas

case insensitive + поиск внутри слова (предлжения)
 

Вложения

  • hardcoreAutocomplete1.zip
    19,7 КБ · Просмотры: 343
A

alexas

Еще UI "Фишка" :
Задача: изменить скриптом поля открытого документа. Проблем нет, только поля визуально прописываются последовательно и это раздражает когда их много (например заполняем большую статическую таблицу). Если создать в памяти темповый док и записать нужные Item-ы туда, а потом сделать CopyAllItems(UI.document, True ) в целевой UI док (не забываем второй параметр - True) - поля обновляются мгновенно. Темповый док конечно не сохраняем.
 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
alexas
Спасибо, вещь!)

Всё-таки положил листбокс на слой, так лучше.
Как насчёт перехода в листбокс по клавише Down, реально? Наверное это единственный трабл остался.
 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
Добавил скрытие листбокса при клике по форме, как бы "сброс всплывающего окошка". Только Exiting отрабатывает как-то странно, - только по клику выше поля ввода или сразу же ниже листбокса (я там форму переводами строки "продлил", а иначе событие не генерируется).
+ некоторые оптимизации.

И всё-таки, как насчёт отлова клавиши Down? :)
Добавил кнопку JS, но почему-то в 9-ке (в других не пробовал) выдаёт ошибку с каким-то бредом, что getElementByName не является функцией или что-то типа того. Это у всех так или только у меня?
 

Вложения

  • hardcoreAutocomplete.zip
    41,5 КБ · Просмотры: 346

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 983
611
BIT
453
getElementByName не является (ЕМНИП) частью нетшкафовского JS

Добавлено:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!