Блоки фильтров и сортировок
Блоки фильтров и сортировок инструкции FORM - добавление фильтров и сортировок в структуру формы, а также групп фильтров и пользовательских фильтров в интерактивное представление формы.
Блок фиксированных фильтров
Синтаксис
FILTERS expression1 [filterType1], ..., expressionN [filterTypeN]
Опции filterType могут указываться после каждого выражения. Поддерживается следующий набор опций:
USER | FIXED
Описание
Блок фиксированных фильтров добавляет на форму фильтры, которые будут автоматически применяться при чтении любых данных на форме. В одном блоке можно перечислить через запятую произвольное количество фильтров.
Каждый фильтр задается выражением, которое определяет условие фильтрации. Во всех выражениях в качестве параметров можно использовать имена уже объявленных объектов на форме.
Фильтр по добавляемому на форму свойству можно также задать опцией FILTER в блоке свойств и действий.
Параметры
-
expression1, ..., expressionNСписок выражений - фильтров.
-
filterType1, ..., filterTypeNНеобязательные типы фильтров для соответствующих выражений.
-
USER | FIXEDКлючевые слова, определяющие тип фильтра:
FIXED- фиксированный фильтр (по умолчанию);USER- пользовательский фильтр. Свойство должно быть предварительно добавлено на форму.
Примеры
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) // включаем, чтобы показывались только активные товары
;
Блок группы фильтров
Синтаксис
[EXTEND] FILTERGROUP groupName [nullType]
FILTER caption1 expression1 [binding1 ... bindingK] [DEFAULT]
...
FILTER captionN expressionN [binding1 ... bindingK] [DEFAULT]
Где каждая привязка binding имеет следующий синтаксис:
[bindingType] bindingLiteral [showType]
Описание
Блок группы фильтров добавляет на форму набор фильтров, для которых будет создан компонент в пользовательском интерфейсе, позволяющий применить в данный момент времени один из заданных фильтров. При указании ключевого слова EXTEND компонент не создается, а используется для расширения. В одном блоке можно определить только одну группу фильтров, состоящую из произвольного количества фильтров, причем пользователю они будут показываться в порядке их перечисления.
Каждый фильтр задается выражением, которое определяет условие фильтрации. Во всех выражениях в качестве параметров можно использовать имена уже объявленных объектов на форме.
Параметры
-
groupNameВнутреннее имя группы фильтров. Простой идентификатор. При указании ключевого слова
EXTENDбудет осуществлен поиск на форме уже созданной группы фильтров с таким именем, иначе будет создана новая группа фильтров с указанным именем. -
nullTypeНаличие в группе фильтра
(Все), который позволяет не применять ни один из фильтров. Одно из:NULL- фильтр(Все)добавляется в группу (значение по умолчанию)NONULL- фильтр(Все)не добавляется в группу, при этом при объявлении группы первый фильтр становится выбранным по умолчанию (если опцияDEFAULTне указывает другой)
-
caption1, ..., captionNЗаголовки, которые будут показываться в пользовательском интерфейсе для соответствующего добавляемого фильтра. Каждый заголовок задается строковым литералом.
-
expression1, ..., expressionNВыражения, описывающие фильтры.
-
binding1 ... bindingKПривязки, при срабатывании которых пользователем будет происходить выбор соответствующего фильтра в группе. Привязки могут указываться в произвольном количестве и порядке.
-
bindingTypeВид привязки. Задается одним из ключевых слов:
KEY- сочетание клавиш (значение по умолчанию)MOUSE- событие мыши
-
bindingLiteralСтроковый литерал, задающий привязку. Для сочетания клавиш принцип задания аналогичен способу задания параметра в методе Java-класса Keystroke.getKeystroke(String). Формат строки и дополнительные опции аналогичны опциям
CHANGEKEYиCHANGEMOUSEв опциях действий. -
showTypeУказание, показывать ли привязку в заголовке фильтра в пользовательском интерфейсе. Задается одним из ключевых слов:
SHOW- показывать (значение по умолчанию)HIDE- не показывать
-
-
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] expression1 [orderType1] [DESC], ..., expressionN [orderTypeN] [DESC]
Опции orderType могут указываться после каждого выражения. Поддерживается следующий набор опций:
USER | FIXED
Описание
Блок сортировок добавляет на форму сортировки, которые будут автоматически применяться при чтении любых данных на форме. В одном блоке можно перечислить через запятую любое количество свойств на форме в произвольной последовательности.
Сортировку по добавляемому на форму свойству можно также задать опцией ORDER в блоке свойств и действий.
Параметры
-
FIRSTКлючевое слово. Указывает на то, что данные сортировки будут применены первыми, ранее всех остальных.
-
expression1, ..., expressionNСписок выражений - сортировок. Как правило, в качестве выражения указывается имя свойства или действия на форме, по которому необходимо осуществлять сортировку. Произвольное выражение может задавать только фиксированную сортировку.
-
orderType1, ..., orderTypeNОпции сортировки для соответствующего выражения.
-
DESCКлючевое слово. Указывает на обратный порядок сортировки. По умолчанию используется сортировка по возрастанию.
-
USER | FIXEDКлючевые слова, определяющие тип сортировки:
USER— пользовательская сортировка (по умолчанию для имен свойств на форме), которую можно переопределять из интерфейса. Свойство должно быть предварительно добавлено на форму.FIXED— фиксированная сортировка, которая задаётся только в коде формы (по умолчанию для остальных выражений).
Примеры
EXTEND FORM onStock // расширяем ранее созданную форму с остатками
ORDERS name(s) // включаем сортировку по наименования склада в списке складов
// Включаем сортировку по возрастанию имени группы, а внутри по убыванию остатка на складе.
// Следует отметить, что в качестве свойства указывается имя свойства на форме groupName,
// а не просто имя свойства nameGroupSku
ORDERS groupName, onStock(st, s) DESC
// Включаем фиксированную сортировку, которая не заменяется пользовательской
ORDERS name(s) FIXED
;