Блоки фильтров и сортировок
Блоки фильтров и сортировок инструкции FORM
- добавление фильтров и сортировок в структуру формы, а также групп фильтров и пользовательских фильтров в интерактивное представление формы.
Блок фиксированных фильтров
Синтаксис
FILTERS expression1, ..., expressionN
Описание
Блок фиксированных фильтров добавляет на форму фильтры, которые будут автоматически применяться при чтении любых данных на форме. В одном блоке можно перечислить через запятую произвольное количество фильтров.
Каждый фильтр задается выражением, которое определяет условие фильтрации. Во всех выражениях в качестве параметров можно использовать имена уже объявленных объектов на форме.
Параметры
-
expression1, ..., expressionN
Список выражений - фильтров.
Примеры
CLASS Stock;
name = DATA ISTRING[100] (Stock);
region = DATA Region (Stock);
CLASS Group;
name = DATA ISTRING[100] (Group);
group = DATA Group(Sku);
nameGroup (Sku s) = name(group(s));
active = DATA BOOLEAN (Sku);
onStock = DATA NUMERIC[10,2] (Stock, Sku);
FORM onStock 'Остатки' // создаем форму, в которой можно смотреть остатки по товарам
OBJECTS r = Region PANEL // добавляем объект регион
// добавляем свойство имя региона, при нажатии на который пользователь сможет его выбирать
PROPERTIES name(r) SELECTOR
OBJECTS st = Stock // добавляем объект склады
PROPERTIES name(st) READONLY // добавляем имя склада
FILTERS region(st) == r // добавляем фильтр, чтобы показывались только склады выбранного региона
OBJECTS s = Sku // добавляем товары
// добавляем наименование группы товаров, присваивая ему groupName в качестве имени свойства на форме,
// а также наименование и остаток по товару
PROPERTIES READONLY groupName = nameGroup(s), name(s), onStock(st, s)
FILTERS active(s) // включаем, чтобы показывались только активные товары
;
Блок пользовательских фильтров
Синтаксис
USERFILTERS formProperty1, ..., formPropertyN
Описание
Блок пользовательских фильтров добавляет на форму пользовательские фильтры. Они аналогичны тем, которые пользователь может добавить сам по нажатию F3
, однако их невозможно удалить.
Каждый фильтр задается свойством на форме, которое уже должно быть добавлено на форму ранее.
Параметры
-
formProperty1, ..., formPropertyN
Список имен свойств на форме, для которых создаются фильтры.
Пр имеры
CLASS Stock;
name = DATA ISTRING[100] (Stock);
FORM stocks 'Склады'
OBJECTS st = Stock // добавляем группу объектов склады
PROPERTIES name(st) // добавляем свойство name
USERFILTERS name(st) // добавляем пользовательский фильтр по свойству name
;
Блок группы фильтров
Синтаксис
[EXTEND] FILTERGROUP groupName
FILTER caption1 expression1 [keystroke1] [DEFAULT]
...
FILTER captionN expressionN [keystrokeN] [DEFAULT]
Описание
Блок группы фильтров добавляет на форму набор фильтров, для которых будет создан компонент в пользовательском интерфейсе, позволяющий применить в данный момент времени один из заданных фильтров. При указании ключевого слова EXTEND
компонент не создается, а используется для расширения. В одном блоке можно определить только одну группу фильтров, состоящую из произвольного количества фильтров, причем пользователю они будут показываться в порядке их перечисления.
Каждый фильтр задается выражением, которое определяет условие фильтрации. Во всех выражениях в качестве параметров можно использовать имена уже объявленных объектов на форме.
Параметры
-
groupName
Внутреннее имя группы фильтров. Простой идентификатор. При указании ключевого слова
EXTEND
будет осуществлен поиск на форме уже созданной группы фильтров с таким именем, иначе будет создана новая группа фильтров с указанным именем. -
caption1, ..., captionN
Заголовки, которые будут показываться в пользовательском интерфейсе для соответствующего добавляемого фильтра. Каждый заголовок задается строковым литералом.
-
expression1, ..., expressionN
Выражения, описывающие фильтры.
-
keystroke1, ..., keystrokeN
Сочетания клавиш, при нажатии которого пользователем будет происходить выбор соответствующего фильтра в группе. Каждое сочетание клавиш задается строковым литералом, принцип задания аналогичен способу задания параметра в методе Java-класса Keystroke.getKeystroke(String).
-
DEFAULT
Ключевое слово, указывающее на то, что добавляемый фильтр должен быть выбран автоматически при открытии формы. М ожет быть задан только для одного фильтра в группе.
Примеры
active = DATA BOOLEAN (Stock);
EXTEND FORM onStock // расширяем ранее созданную форму с остатками
// создаем группу фильтров с одним фильтрам, которая будет показываться в виде флажка,
// по которому пользователь сможет включать/отключать фильтр
FILTERGROUP stockActive
// добавляем отбор по только активным складам, который будет применяться по нажатию клавиши F11
FILTER 'Активные' active(st) 'F11'
// создаем новую группу фильтров, в которой пользователь сможет выбирать один из фильтров
// при помощи выпадающего списка
FILTERGROUP skuAvailability
// добавляем отбор, который будет показывать только товары на остатках, выбираться по клавише F10
// и будет автоматически выбран при открытии формы
FILTER 'Есть на остатках' onStock(st, s) 'F10' DEFAULT
;
// ...
EXTEND FORM onStock
EXTEND FILTERGROUP skuAvailability
FILTER 'Отрицательные остатки' onStock(st, s) < 0 'F9' // добавляем отбор по выражению
;
Блок сортировок
Синтаксис
ORDERS [FIRST]
formPropertyName1 [DESC]
...
formPropertyNameN [DESC]
Описание
Блок сортировок добавляет на форму сортировки, которые будут автоматически применяться при чтении любых данных на форме. В одном блоке можно перечислить через запятую любое количество свойств на форме в произвольной последовательности. Эти свойства должны быть предварительно добавлены на форму.
Параметры
-
FIRST
Ключевое слово. Указывает на то, что данные сортировки будут применены первыми, ранее всех остальных.
-
formPropertyName1, ..., formPropertyNameN
Имена свойств или действий на форме, по которым необходимо осуществлять сортировку.
-
DESC
Ключевое слово. Указывает на обратный порядок сортировки. По умолчанию используется сортировка по возрастанию.
Примеры
EXTEND FORM onStock // расширяем ранее созданную форму с остатками
ORDERS name(s) // включаем сортировку по наименования склада в списке складов
// Включаем сортировку по возрастанию имени группы, а внутри по убыванию остатка на складе.
// Следует отметить, что в качестве свойства указывается имя свойства на форме groupName,
// а не просто имя свойства nameGroupSku
ORDERS groupName, onStock(st, s) DESC
;