Глава 5. ПАНЕЛЬ СПРАВОЧНИКА
Иерархическая фильтрация в справочниках (рубрикаторы)
Рубрикаторы – это иерархические фильтры, которые может создавать пользователь
. Каждый рубрикатор представляет собой дерево рубрик. Рубрики бывают
трех типов:
- Класс
- Фильтр по атрибуту
- Папка «Прочее»
Каждая рубрика осуществляет определенный «отсев» объектов, хранящихся
в справочной системе. Дочерняя рубрика ужесточает фильтрацию, добавляя
новое условие «отсева», и так далее.
Рубрика типа Класс просто ограничивает объекты определенным классом. Рубрика
типа Фильтр по атрибуту также ограничивает объекты определенным классом,
но при этом еще добавляет одно условие фильтрации вида Атрибут
= Значение. Папка «Прочее» служит для отображения
всех объектов определенного класса, которые не подпали под действие
фильтров по определенному атрибуту на том же уровне ветви дерева
.
Проще всего создавать рубрики массово. Это можно сделать в
окне «Все справочники», вызываемом из Главного меню.
Слева от панели справочника располагается дерево рубрик. Создание и
удаление рубрик осуществляется при помощи контекстного меню, вызываемого правой
кнопкой мыши. Если выбрать в дереве какую-нибудь
существующую рубрику, то контекстное меню позволяет создать либо рубрику
того же уровня, либо подрубрику, либо сразу множество
подрубрик типа Фильтр по атрибуту:
При создании Подгруппы фильтров программа предложит выбрать Класс и Атрибут
для фильтрации
В выпадающем списке атрибутов будут присутствовать все атрибуты выбранного класса
, которые имеют поле типа «Справочник» и по
которым еще не было фильтрации на старших уровнях этой ветви
дерева.
В показанном примере справочник Товары имеет два поля типа «
Справочник». Одно из них ссылается на справочник Марок товаров
, а другое - на справочник Видов товаров. После
того, как атрибут фильтрации выбран, появится список имен
папок, которые могут быть созданы. Рекомендуется оставить птички
только на тех значениях, которые будут часто использоваться.
Все остальное окажется в папке «Прочее». Имеется два
списка значений атрибута: все возможные значения и реально используемые
значения. Как правило, если справочник уже заполнен,
рекомендуется включить птичку «Ограничиться только используемыми значениями»:
После нажатия кнопки «Создать» возникнет сообщение о создании
группы подрубрик и, если пользователь его подтвердит, в
дереве будет создано множество подрубрик типа Фильтр по атрибуту:
Если теперь в дереве пользователь выбирает папку BOSCH, то
товары фильтруются по значению поля Марка товара = BOSCH.
Теперь можно у папки BOSCH создать подгруппу фильтров по виду
товара точно таким же способом и получить следующий уровень дерева
фильтров:
Рубрики работают не только как фильтры, но одновременно и
как поставщики значений по умолчанию при добавлении новых объектов в
справочник. Если в рубрике BOSCH в подрубрике Кофеварка попытаться
добавить новый элемент в справочник, то соответствующие два поля
будут уже заранее заполнены:
Часто вместо того, чтобы создавать новый подуровень в каждой
папке, разумнее создать альтернативное разбиение на том же уровне
. Например. мы можем создать группу фильтров по Видам
товара на том же уровне дерева, на котором мы
создали группу фильтров по Маркам товара. Тогда пользователь получит
два альтернативных способа навигации – искать по марке среди всех
видов или по виду среди всех марок:
При таких «гибридных» каталогизациях возникают одноименные папки типа
«Прочее». Это легко исправить, так как любая
рубрика может иметь как автоматическое, так и ручное название
. По умолчанию все названия автоматические, то есть названия
папок не хранятся, а берутся из кратких наименований элементов
справочников, которые они представляют или из имен классов.
Для изменения названия на ручное нужно воспользоваться пунктом «Свойства
» контекстного меню и в диалоге свойств снять птичку «
Автоматическое наименование». После чего можно ввести желаемое наименование папки
, например, «Прочие виды товара»:
Систему рубрик легко перестраивать, так как рубрики можно не
только массово создавать, но и массово удалять. Для
удаления множества рубрик нужно их выбрать в дереве с помощью
клавиш Ctrl, Shift в сочетании со стрелками или левой
кнопкой мыши (как это обычно делается в списках),
а затем вызвать пункт контекстного меню Удалить или нажать комбинацию
клавиш Shift+Del.
Вы можете создавать или удалять также отдельные рубрики с помощью
пунктов контекстного меню Создать/Рубрику или Создать/Подрубрику
. Фильтры по атрибутам позволяют фильтровать не только по полям
типа «Справочник», но и по любым целочисленным или
логическим полям. Например, если в справочнике контрагентов имеются
два независимых логических поля: «поставщик» и «
покупатель», то можно создать у рубрики класса Контрагенты две
подрубрики-фильтра: «Поставщики» и «Покупатели
». При этом если какой-то контрагент является одновременно
и поставщиком и покупателем (у него в обоих полях
стоит птичка), то он окажется одновременно в двух разных
папках, как среди поставщиков, так и среди покупателей
.
Рубрики типа «класс» могут быть дочерними к рубрикам
типа «фильтр по атрибуту». Это позволяет быстро построить
красивые деревья рубрик, в которых перемешаны классы и фильтры
по атрибутам. Допустим у нас имеется класс Товары,
у которого есть атрибут Производитель. Мы можем сразу создать
подгруппу фильтров, разбив все товары по производителям. Допустим
, известно, что какие-то производители производят какие
-то классы товаров, а другие производители – совершенно
иные классы товаров. В этом случае можно создать подрубрики
типа «класс» к рубрикам-фильтрам соответствующих производителей
. Так как эти классы уже обладают новой (своей
) атрибутикой, то их уже можно разбить с помощью
подгрупп фильтров по соответствующим, специфическим для этих классов,
атрибутам. Так можно создать развитое дерево каталогов, позволяющее
легко ориентироваться в совершенно разных группах товаров. При этом
все товары продолжают храниться в справочниках в строгих «плоских
таблицах», а дерево рубрик в любой момент времени можно
перестраивать или дорабатывать, не рискуя при этом нарушить что
-то в самих справочниках.
Благодаря автоматизированным папкам типа «Прочее» можно постоянно поддерживать
минимальное количество самых актуальных для работы папок в дереве,
упрощая и ускоряя навигацию по данным. Допустим, у
нас имеется справочник коллекционных товаров, быстро выходящих из моды
. Тогда можно создавать рубрики для самых последних коллекций,
а старые рубрики удалять – соответствующие товары автоматически окажутся в
папке «Прочее».
Иерархические фильтры действуют совместно с обычными фильтрами класса, которые
были описаны в предыдущем параграфе. При добавлении новых элементов
в справочник значения по умолчанию поставляются обоими фильтрами (как
фильтром класса, так и рубрикатором). Приоритетом обладают рубрикаторы
. Так, если пользователь находится в папке ARDO,
а фильтре класса установлена фильтрация по марке BOSCH, то
при добавлении нового элемента в справочник в поле Марка по
умолчанию будет установлено значение ARDO.
|