Динамические фильтры: как использовать

В данный статье мы рассмотрим такую приятную с точки зрения пользователя возможность как Динамические фильтры. Статья состоит из двух частей, в первой мы рассмотрим способы использования динамических фильтров. Во-второй, предназначенной для разработчиков, содержатся разъяснения того как эту радость можно приумножить.

Читая тренинги пользователям, представляя возможности по фильтрации я спрашивал – «пользуются ли они такой функциональностью в Microsoft Excel  как автофильтры?», и после утвердительного ответа сообщал, что в Dynamics NAV тоже есть фильтрация, причем на мой взгляд – лучше.
То было еще при классическом клиенте. Однако сейчас неплохо бы освежить информацию о так называемом Windows Client (ранее RTC).
В любом случае полагаю, что будет полезно начать с обзора о фильтрации вообще. И для начала ознакомимся с глоссарием.

Filters in Dynamics NAV

Начнем полезной функции – Фильтровать до этого значения (1). Она вызывается из контекстного меню, доступного при щелчке правой кнопкой мыши по требуемому значению в таблице. Ее следует трактовать как: «Применить выделенное значение, как фильтр для текущего столбца». С ее помощью можно быстро отфильтровать список по одному из значений в этом списке. Например, по коду склада. Для установки данного фильтр с клавиатуры используется комбинация клавиш Alt+F3.

При этом можно заметить как значение будет помещено в поле Type to filter (по-русски оно звучит Ввод для фильтра). А в соседнем поле указывается название столбца, по которому осуществляется фильтрация. Кстати чтобы установить фильтр не обязательно использовать контекстное меню, достаточно ввести в значение в поле Type to filter и нажать Enter. Фильтр будет применен к полю из Выбор Столбца (справа). Там кстати, отображаются все видимые в окне столбцы. Т.е. если в результате настройки пользователь скроет какое-либо поле, то он не сможет применять к нему быстрые фильтры. Чтобы перейти в поле Type to filter можно использовать клавишу F3, а завершив ввод с помощью Enter можно выбрать столбец по которому будет осуществляться фильтрация с помощью клавиши Стрелка Вниз.

Обе эти функции относятся к группе так называемых Быстрых фильтров. Хотя они допускают ввод выражений, все же они рассчитаны на ввод подстроки. Поэтому к введенному значению автоматически применяются выражения @ и * в конце строки. @ - чтобы сделать фильтр регистронезависимым, а * - чтобы поиск выполнялся не на полное соответствие, а по принципу «начинается с».

Кстати, хотя фильтр установленный с помощью функции Фильтровать до этого значения визуально на экране представлен словно был введен через поле Type to filter, тем не менее он работает чуть иначе, в частности символы @ и * к нему не применяются.

Это значит, что если в базе есть клиенты:

  • Cannon
  • cannon
  • Cannon Group

То ввод Быстрого Фильтра = cannon отобразит все три значения, а функция Фильтровать до этого значения – только одно (то на котором был установлен курсор). Чтобы заставить Быстрые фильтры работать также как работает функция Фильтровать до этого значения (а значит запретить системе применять выражения * и @) нужно просто окружить введенное значение одинарными кавычками.

Быстрый фильтр = ‘cannon’ отобразит только одну строку. На этом кстати была основана загадка с сайта «apanko.ru» .

Итак, мы уже упомянули про две опции фильтрации – Type to filter и Фильтровать до этого значения, которые позволяют успешно решить большинство задач, возникающих перед пользователем. Однако, иногда возникает потребность в большем. В этом случае пользователь может задать условия фильтрации в Панели фильтров (4), чтобы ее отобразить можно нажать на кнопку Развернуть (3) или активировать пункт Customize – Filter Pane из Меню приложения (5).

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

Также система не модифицирует введенные строки фильтров, позволяя пользователю самому контролировать процесс и применять нужные выражения и их комбинации (о чем рекомендую прочитать в справке или на MSDN).

Однако все эти возможности присутствовали и ранее, в ролеориентированном клиенте Microsoft Dynamics NAV 2009 R2. Что же нового нам принес релиз NAV 2013. А в нем была добавлена концепция Динамических фильтров. Это значит, что пользователь может ввести специальный строки, а они будут преобразованы системой в строку фильтрации в зависимости от ситуации.

В настоящий момент Microsoft Dynamics NAV 2013 поддерживает следующие динамический фильтры:

  • %User или %Me – заменяется на код пользователя
  • %Company – возвращает текущую компанию
  • %MyCustomers – формирует фильтр на основании записей таблицы “My Customers”
  • %MyItems – формирует фильтр на основании записей таблицы “My Items”
  • %MyVendors – формирует фильтр на основании записей таблицы “My Vendors”

Как используются данные динамические фильтры – их можно применять в Панели фильтров как отдельно так и вместе с другими выражениями. Если на код пользователя или название компании часто находятся вне зоны досигаемости самого пользователя, то на содержимое таблиц типа My Items, My Vendors или My Customers пользователь имеет непосредственное влияние.

Manage MyCustomers List

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

MyCustomers dynamic filter

Система сама выполнит преобразование для фильтрации, причем делать это будет динамически.

MyCustomers dynamic filtering

Далее приятный момент. Пользователь как известно может сохранит отфильтрованное представление и оно появится в панели навигации.

Save view

При дальнейшем изменении таблиц My Items, My Customers или My Vendors систему будет также обновлять представление. Стоит признать, что такое использование таблиц My Items, My Customers или My Vendors является более логичным и продуктивным.

Однако наибольшую мощь эта технология развивает вместе с динамическими фильтрами дат:
Ранее мы были счастливы использовать символы T(today) и W(workdate), чтобы упростить процедуру ввода даты.
Нынче мы можем использовать динамические фильтры даты:

  • PERIOD – учетный период
  • YEAR – текущий год
  • TODAY - сегодня
  • WORKDATE – рабочая дата
  • NOW – сейчас (ДатаВремя)
  • YESTERDAY - вчера
  • TOMORROW - завтра
  • WEEK – текущая неделя
  • MONTH – текущий месяц
  • QUARTER – текущий квартал

Более того поддерживаются выражения в стиле формула даты. Т.е. в теперь список документов можно легко отфильтровать по YESTERDAY..YESTERDAY-3D или -CM..CM.

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

Метки: ,



Оставьте свой отзыв!