Перейти к основному содержимому
Версия: 6.x

Блоки фильтров и сортировок

Блоки фильтров и сортировок инструкции 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
;