Абстрактный классификатор (версия 1.0)
Есть более новая версия. См.
Абстрактный классификатор (версия 1.1)
Описание
При работе с большими наборами данных возникает проблема фильтрации записей для облегчения нахождения информации. Иногда бывает удобно группировать записи в соответствии с оригинальными классификациями, которых в базе данных не существует. Например, вы хотите выбрать из набора номенклатур те, которые относятся к импортным поставкам. В таблице "Номенклатура", однако, нет поля, отражающего необходимую нам информацию, а значит стандартным фильтром воспользоваться не удастся.
В качестве решения предлагается проект "Классификатор". Используя этот проект, вы сможете присвоить метку любой записи любой таблицы. Набор меток-классов может быть совершенно произволен. Каждая запись таблицы может принадлежать неограниченному количеству классов. Для фильтрации можно использовать любую удобную форму представления. В проекте реализовано представление иерархии классов в виде дерева и фильтрация с его помощью.
В проекте также содержится форма "Номенклатурные единицы" с внедренным классификатором.
Использование
Для создания новых классов и типов классификатора используйте форму "Администрирование классификатора". При импорте проекта она автоматически появится на вкладке "Разное" главного меню. Для создания новых типов пользуйтесь вкладкой "Типы классификаторов". Создавать, редактировать и удалять классы можно непосредственно на вкладке "Дерево" (кстати, это можно делать в любой форме, где отображается дерево классификатора).
Чтобы классифицировать записи таблицы "Номенклатурные единицы", перейдите на вкладку "Классификация" соответствующей формы. В верхней части окна вы сможете выбирать записи таблицы, в нижней - назначать и отменять назначение им определенной метки-класса.
Для фильтрации таблицы по определенному классу в основной форме достаточно просто выбрать этот класс в дереве. Кроме того, отмечая набор классов галками, вы можете произвести фильтрацию сразу по нескольким классам.
В проект также входит lookup форма по Кодам Номенклатуры. В этой форме также реализована возможность использования классификатора для фильтрации записей. Вид дерева в этой форме упрощен, чтобы сделать ее меньше и информативнее.
Классифицировать таблицу можно только в том случае, если она указана в таблице "Хранилища" (форма "Администрирование классификатора", вкладка "Хранилища") классификатора. В этой таблице необходимо указать имя классифицируемой таблицы, название поля этой таблице, которое будет использоваться в качестве ключевого, и индекс. После указания таблицы в качестве хранилища можно приступать к классификации объектов из нее.
Состав проекта
Класс HB_ACUtils. Этот класс содержит функции для работы с классификатором. Его методы CreateLink и DeleteLink позволяют связывать и удалять связь объекта с определенным классом. Методы RunTableFilter и RunTableClassFilter фильтруют таблицы.
Класс HB_ACTree. Класс содержит функции для работы с деревом классификатора. В нем описаны функции создания, удаления и редактирования класса, построения дерева и навигации по нему.
Форма HB_ACAdmin.

Форма для администрирования классификатора. При импорте проекта в Главном Меню на вкладке Разное автоматически появляется пункт "Администрирование классификатора", связанный с этой формой.
Форма HB_InventTableLookupForm.

Lookup форма для Кода Номенклатуры с возможностью использования классификатора.
Форма InventTable. Расширенный вариант формы Номенклатурные единицы (Главное меню – Управление запасами – Номенклатурные единицы) с возможностью использования классификатора. На вкладке "Классификация" этой формы вы сможете классифицировать объекты.
Форма HB_InventTableLite. Упрощенный вариант формы Номенклатурные единицы с классификатором. Используйте в качестве примера внедрения классификатора в новую форму.
Ознакомьтесь с лицензионным соглашением:
Лицензионное соглашение
Обсуждение Классификатора ведется на форуме:
Абстрактный классификатор