Блоки фильтров и сортировок
Блоки фильтров и сортировок инструкции 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 [NONULL]
FILTER caption1 expression1 [keystroke1] [DEFAULT]
...
FILTER captionN expressionN [keystrokeN] [DEFAULT]
Описание
Блок группы фильтров добавляет на форму набор фильтров, для которых будет создан компонент в пользовательском интерфейсе, позволяющий применить в данный момент времени один из заданных фильтров. При указании ключевого слова EXTEND компонент не создается, а используется для расширения. В одном блоке можно определить только одну группу фильтров, состоящую из произвольного количества фильтров, причем пользователю они будут показываться в порядке их перечисления.
Каждый фильтр задается выражением, которое определяет условие фильтрации. Во всех выражениях в качестве параметров можно использовать имена уже объявленных объектов на форме.
Параметры
-
groupNameВнутреннее имя группы фильтров. Простой идентификатор. При указании ключевого слова
EXTENDбудет осуществлен поиск на форме уже созданной группы фильтров с таким именем, иначе будет создана новая группа фильтров с указанным именем. -
NONULLПри указании ключевого слова
NONULLв группу не добавляется фильтр(Все). фильтр(Все)позволяет не применять ни один из фильтров. Опция может быть задана только при объявленииFILTERGROUP(не в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
;