Выделение записей в списках

Кстати, способ выделения записи в точках и в объектах различается. То как в объектах лично мне нравится больше.

Мы пытаемся решить сразу несколько проблем, некоторые из которых появились в новом способе выделения, а некоторые были в старом:

  1. В списке существует два понятия: “Отмеченные флажками записи” и “Выделенная (сфокусированная) запись”. Проблема заключается в том, что когда пользователь отметил несколько записей, но выделил одну из них, либо совсем другую, то не понятно, над какими из них будет совершено действие, например печать отчета или удаление. Узнать об этом можно только “методом тыка”, т.е. проверить.

1.1. Внешние модули. Разработчику внешнего модуля при обработке нажатия его кнопки нужно передавать, как выделенную одну запись, так и несколько отмеченных. Изначально была добавлена поддержка передачи только одной выделенной записи. Когда понадобилось добавить передачу нескольких отмеченных, потребовалось добавлять новые методы. Если мы предоставим каждому разработчику внешнего модуля возможность самому решать, над какими записями (отмеченными и выделенной) об будет выполнять действие, то пользователю опять же будет непонятно (система в одном случае работает так, в другом - эдак).

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

После долгого обсуждения, у нас появилось несколько вариантов, но мы так и не пришли к единому мнению.

Если совместить выделенная запись = отмеченная, как это сделано в других программах, то когда вы попадаете во флажок, то запись добавляется к отмеченным, если нажимаете мимо флажка, то все предыдущие отметки снимаются и становится выделена одна запись. Это тоже не удобно, т.к. случайное нажатие мимо флажка приводит к потере ранее выделенных записей, особенно, если использовалась сложная фильтрация (п.2).

Можно сделать кнопку-переключатель для выбора режима выделения: одна запись или несколько. В режиме выделения нескольких записей, случайное нажатие мимо не будет приводить к сбросу предыдущих отмеченных, нажатие на записи во второй раз будет снимать с нее отметку.

Еще вопрос: Что делать, если пользователь выбрал несколько записей и нажал кнопку “Свойства” или “Таблица данных”? Открывать свойства/таблицу каждой записи или запретить нажимать ему некоторые кнопки в этом режиме? При нажатии на Удалить, да, можно сделать удаление всех отмеченных записей, но можно удалить лишнего, если пользователь использовал фильтрацию и забыл, что у него отмечены еще и другие записи (п.2).

В общем, хотелось бы услышать предложения форумчан, как они видят идеальный и понятный им способ выделения записей и работы с ними на списках.

Если пользователь отметил несколько записей и нажал Свойства, то поступать как велит логика и многолетняя привычка (привет Нортон коммандер) - вывести свойства объекта, который в фокусе. Именно так сейчас ведет себя ЛЭРС-учет, это логично, все привыкли, всех это устраивает.
При нажатии “Удалить” на зафильтрованном списке достаточно уведомить пользователя что удалятся не только видимые в данный момент точки, но и скрытые применяемым фильтром.
При работе с внешними модулями, можно, как вариант, при наведении указателя на кнопку/пункт меню выбора модуля, который предполагается использовать, подсвечивать те точки, к которым действие модуля будет применено (или затенять точки, не участвующие). Внести это в спецификацию и добавить требования для разработки сторонних модулей. Пользователь будет визуально уведомлен о результате, и будет меньше путаницы.
Либо внести настройку реакции системы на подобную неоднозначность (использовать множество выбранных записей либо запись в фокусе). Каждый пользователь настроит как ему удобнее или более часто востребовано. Хотя этот вариант мне меньше нравится.
Других мыслей пока нет.

Особой проблемы в старой схеме я не замечал. Была возможность получить неожиданность, если забыл что отметил, но это не напрягало. Я бы предложил добавить только сообщение, если пользователь совершает операцию, где используются не видимые в данный момент записи (например формируют отчеты или совершают групповую операцию). Причем в сообщении нужно указать количество выделенных записей.
Это единственное, что бы я посоветовал сделать.
У Вас было четко определено в каких действиях используются “Отмеченные флажками записи”, а в каких “Выделенная (сфокусированная) запись”.

Поэтому остальное, я бы посоветовал, оставить без изменений. Пользовательский интерфейс такого класса программ должен быть консервативным.

А для внешних модулей, на мой взгляд, Вам следует дать свободу разработчикам, так как они пишутся “под себя” почти всегда. Если же Вы размещаете модуль на сайте, то проверяйте, соблюдает ли модуль логику пользовательского интерфейса ЛЭРС Учет.