Пользовательские «хотелки»: «А можно сделать сортировку и Автофильтр, как в Excel’е?»

Начнём с того, что сделать, в принципе, можно очень многое, и мы сейчас в этом убедимся. Для этого добавьте к проекту существующий отчёт «SortingAndFilteringExample.rdl». Запустите его на выполнение:

Внешний вид отчёта с интерактивной сортировкой и фильтрацией, задаваемой пользователем

Попробуйте задать другие поля для каскадной сортировки, только следует помнить, что нельзя указать дважды одно и то же поле. Разумеется, можно было бы сделать параметр «Сортировка2» зависимым от параметра «Сортировка1» так, чтобы в списке полей отсутствовало поле, выбранное в «Сортировка1», а параметр «Сортировка3» зависимым от значений параметров «Сортировка1» и «Сортировка2», но не будем этим заниматься. Попробуйте также произвести фильтрацию, например, как на картинке ниже или что-нибудь в таком же роде:

Внешний вид отчёта с фильтрацией по полям, заданным пользователем

Итак, мы убедились, что сделать можно многое, вопрос только, нужно ли. Речь о непрерывном континууме, на одной стороне которого универсальность, на другой — простота. Поверьте моему опыту, я более 5 лет работаю с отчётами MS RS, не надо гнаться за универсальностью на все случаи жизни, пользователю трудно будет с этим работать. Лучше проще, да лучше. По опыту знаю, что сортировать по всем имеющимся полям таблицы не требуется, можно заранее определить бизнес логику группировки и сортировки. Пользователи через какое-то время привыкнут к ограничениям, в крайнем случае, попросят вас добавить ещё один вариант сортировки или выборки. Достаточно будет вместо 4-х полей сортировки иметь одно, а значения этого поля могут выглядеть, например, так: «Код покупателя – Дата счёта-фактуры – Номер счёта-фактуры», «Дата счёта-фактуры – Код покупателя – Номер счёта-фактуры» и т.п.

Ну, скажите, имеет ли смысл сортировка «Номер счёта-фактуры – Код покупателя»? Разве у одного номера счёта-фактуры может быть 2 покупателя? Или «Код покупателя – Название покупателя»?

Содержание: