Выбор из списка
Довольно часто надо выбрать из списка какую-то информацию. Например, может потребоваться выбрать поставщика/покупателя при создании накладной. Может потребоваться выбор товара и прочего. Наборы доступных для выбора данных хранятся в справочниках. Справочники могут содержать тысячи строк и нужно что-то, что позволит быстро найти одну, конкретную, нужную. Задача как обычно не решается в общем виде, но есть масса конкретных ситуаций, когда этот поиск можно организовать тем или иным, подходящим к ситуации, способом.
А есть ещё привычки, установки, мода наконец. Мода на коды появилась в DOS-овские времена. Если программа требует ввести не “ООО «Фирма+»” и не просто «Фирма+» а код типа «1234-001» то можно смело утверждать, что это писали люди с DOS-овскими привычками. Причём это неудобно в данном конкретном случае выбора организации.
А вот если надо выбрать товар из справочника это может быть удобно потому что у товара может быть название «Инструмент» и дальше длинная буквенно – численная характеристика, которая однозначно определяет эту деталь, но проще уж ввести это самое «1234-001» с бумажки чем сличать длинную строку названия.
На DOS-овском фундаменте с кодами появился Widows с набором стандартных элементов которые могут быть размещены на экране.
Один из таких стандартных элементов – ComboBox – поле с выпадающим списком:
Написать можно что угодно, но это уже написано, можно просто брать и использовать. Этот ComboBox умеет сам переходить на нужную строку если, например, введены первые буквы. Он это делает автоматически, программисту не надо ничего для этого писать.
Одновременно с появлением Windows немного поменялась работа с базами данных. Вместо кодов начали использовать ID (идентификаторы). Общепринятым стал тот самый выбор организации/товара/прочего из отсортированного списка. Для ускорения поиска можно было ввести первые буквы названия.
К сожаление это неудобно, если список длинный. И этим вообще невозможно пользоваться если искать надо не по первым буквам а по подстроке внутри названия. Эта та ситуация когда программист оставаясь в рамках стандарта будет сооружать заведомую халтуру которой пользоваться либо неудобно либо вообще нельзя.
Что такой стандарт? Это то, на что можно сослаться сказав, что все так делают. Это то, что требует минимальных усилий, что важно при усталости. И это то, что требует минимального времени, что важно если вообще кто-то заговорил о времени. Попросту говоря усиление любого из этих факторов будет снижать качество. Банальность какая-то получилась (чем больше производительность тем ниже качество), но пусть будет. Во всяком случае если вам кто-то начнёт плести про то, что он сделал так как все делают будете знать о чем идёт речь.
За пределы стандарта все выходят по разному.
Вот, например, у меня справа от обычного списка маленькая кнопочка:
Нажав которую можно получить такую форму:
… В форме две кнопки поиска. Можно искать с начала строки (с нулевой позиции) по кнопке «С нач», что дублирует возможности обычного списка. А можно нажать кнопку «С люб», т. е с любой позиции и найти все строки, в которых есть введённая строка поиска.
А вот так с той же проблемой борются 1С-овцы:
Я ввела «кря», но Приморского КРАя я в списке не вижу. Чтобы поискать подстроку в любой части текста надо нажать кнопку с тремя точками, а в форме запустить поиск:
Тут есть ещё одна проблема. Нестандартное можно сделать, но надо бы ещё чтобы это было интуитивно понятно. В противном случае люди либо не выучат как этим пользоваться либо, что хуже будут утыкаться в сложный интерфейс и тоже будут обосновано недовольны.
Вот так, например, выглядит расширенный поиск Google:
… в который можно ввести довольно сложное выражение, комбинации слов и т.д. Но обычно никто не ожидает встретить те же возможности при вводе названия товара. Можно их сделать, но всему коллективу придётся три раза объяснить, как этим пользоваться а потом полгода периодически напоминать, что такое вообще есть.
Это тоже стандарт. В поле для списка должны быть обязательно поиск по первым буквам и, может быть поиск по подстроке. К остальному люди не приучены.
Если я напишу в название «Нева торг» программа и попытается найти сплошную строку «Нева+пробел+торг» а вовсе не два слова «нева» и «торг» возможно расположенные в разные частях названия. Поменять алгоритм довольно легко если это очень хочется но сразу появится куча народа у которого программа будет находить вовсе не то, что они ожидают.
Я сгущаю и утрируют, конечно. Я просто пытаюсь описать проблемы отчасти потому что не все варианты проломанного стандарта мне понравились хотя я понимаю чувства тех, кто так делал. Им действительно было неудобно.
Вот, например:
http://www.2mpz.ru/catalogue/c2/?p=1
Если нажать «Подробнее», то новое окно не открывается а открывается псевдоокно из которого можно выйти по Esc. Отчасти удобно, отчасти путает.
Сразу скажу, что ситуаций, когда мне в таком справочнике требовался поиск по двум словам у меня не было. Был у меня вложенный поиск по текстам сохранённых статей, т.е вначале можно было найти все статьи в которых есть слова «Ирак», а потом в них же только те, в которых есть «Иран» (это я себе соорудила некий аналог полнотекстового поиска), а вот поиска двух отдельных слов в каком-нибудь справочнике товаров никому не потребовалось.
1С-овцы это решили радикально кнопкой «настроить список»:
И дальше так:
… т.е тут можно настроить буквально что угодно. Появились это, вроде бы, только в 8.2-й версии. А показываю это потому, что это тоже своеобразный стандарт. Т.е если делать примерно так, то можно надеяться что хотя бы части пользователей 1С будет примерно понятно где искать кнопку настроек.
Это тоже важно. Сделать можно что угодно, но люди просто не будут находить тот подпункт меню, в котором это всё делается.
С одной стороны стандарты создают ограничения а с другой позволяют делать так называемые интуитивные интерфейсы. Разнообразные стандарты тоже лучше учитывать.
Что касается качества, то люди обычно хорошо делают для себя или для кого-то. Хорошая работа для постоянного клиента это тоже вариант «для себя» потому что самому же с этим возиться придётся если что-то ещё потребуется.
Попросту говоря качества скорее можно ожидать от собственного сотрудника, чем от сторонней организации, с которой просто заключён договор. Это моё личное мнение.
Качество массовой сборки чего угодно?... Гордиться тут решительно нечем, но я никогда не ставила себе цели его обеспечить. Я этим не горжусь, я это констатирую. Мне честно говоря лень думать, почему так происходит. Первое, что приходит в голову: если собственник заинтересован в том, чтобы меньше платить, то производитель вынужден удовлетворять платежеспособный спрос, т.е глобальный экономический механизм отрабатывает на снижение качества. Что же с дорогими товарами? А тем легко образуемая монополия из 3-4-5 халтурщиков которым значительно выгоднее сотрудничать чем конкурировать. А все вместе они всё тот же монополист, который будучи монополистом будет диктовать условия всем, у кого нет других вариантов. А других вариантов ни у кого нет, платежеспособность тут ни при чём. Что делает монополист? А он снижает качество для всех потому то ему это выгодно, а у покупателей нет других вариантов. Он разве что соорудит «красивую коробочку» из большого ценника чтобы человек гордился большими затратами. Это подмена удовольствия. Вместо реальных потребительских качеств даётся возможность потешить самолюбие. Это как если бы коровы соревновались надоями. Коров в этой ситуации примитивно используют. Но если корова уверена что она самая лучшая потому что с ней больше всего надоили то это может сгладить чувство несправедливости от того, что сено всем досталось одинаковое (хоть на полученном было написано «Дорогое сено»). И на этом «бензине» тоже куда-то ехать можно. Другое дело, что качество «сена» будет снижаться потому, что не оно является «бензином», а… чувство глубокого удовлетворения.
Логичный вопрос: а куда девалось отжатое у рабочего класса? Его же тоже надо тратить, на те же товары роскоши например. Их и тратят на фуфло по дикой цене. А основная масса по биржам, так понимаю, скачет, надувая пузыри то там то тут. А потому что ничем не обеспеченные бумажки. Их девать некуда. Та самая проблема, когда деньги есть а купить на них нечего нельзя. Потому они лезут по всему миру с рекламой слова «инвестиции», пытаясь везде совать эту резаную бумагу чтобы получить ешё больше резаной бумаги с которой дальше всё меньше будет понятно что делать. По-моему что-то такое происходит.
|