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

beloff

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

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 226
25
#2
1) сделай первый столбец сортировочным и тогда достаточно будет просто писать название (без Ctrl+F)
2) сделай рядом с кнопкой вызова окна небольшое поле куда достаточно вписать часть названия и по ентеру сразу открываться промт с названиями похожими на то, что ввели
 

beloff

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

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 790
42
#4
Можно организовать нормальный вид. Без кавычек.
В окне поиска написано "Начинается с...", а не "Содержит..."
И если название начинается с кавычек - следовательно...

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

divankin

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

Constantin A Chervonenko

Well-Known Member
Lotus team
30.05.2006
1 333
4
#7
если это важно.. там идет Show Single Category
О! Ещё как важно.
В Single Category обыкновенный Start with/Search text SearchAll не работает. Оно и понятно: 1-я сортированная колонка УЖЕ использована

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

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 226
25
#9
2) сделай рядом с кнопкой вызова окна небольшое поле куда достаточно вписать часть названия и по ентеру сразу открываться промт с названиями похожими на то, что ввели

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

VladSh

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

Darkhan

Well-Known Member
Lotus team
14.12.2012
98
4
#11
VladSh, полноценного autocomplete на клиенте не получилось, но как альтернатива: база (там единственная форма)
 

alexas

Well-Known Member
10.06.2009
214
0
#12
VladSh - в клиенте пользуюсь примерно так -
поправил базу Darkhanа

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

Вложения

Darkhan

Well-Known Member
Lotus team
14.12.2012
98
4
#13
alexas, закрыть кнопку выбора у combobox-a с помощью layer, это очень ново для меня! хотя и реальный хардкорр)))
 

VladSh

начинающий
Lotus team
11.12.2009
1 248
2
#14
Darkhan, alexas
Круто, спасибо! :)

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

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

alexas

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

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

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

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

Вложения

alexas

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

VladSh

начинающий
Lotus team
11.12.2009
1 248
2
#18
alexas
Спасибо, вещь!)

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

VladSh

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

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

Вложения