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

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

Блоки фильтров и сортировок инструкции FORM - добавление фильтров и сортировок в структуру формы, а также групп фильтров и пользовательских фильтров в интерактивное представление формы.

Блок фиксированных фильтров

Синтаксис

FILTERS expression1 [filterType1], ..., expressionN [filterTypeN]

Опции filterType могут указываться после каждого выражения. Поддерживается следующий набор опций:

USER | FIXED

Описание

Блок фиксированных фильтров добавляет на форму фильтры, которые будут автоматически применяться при чтении любых данных на форме. В одном блоке можно перечислить через запятую произвольное количество фильтров.

Каждый фильтр задается выражением, которое определяет условие фильтрации. Во всех выражениях в качестве параметров можно использовать имена уже объявленных объектов на форме.

Параметры

  • 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) // включаем, чтобы показывались только активные товары
;

Блок пользовательских фильтров

Синтаксис

USERFILTERS formProperty1, ..., formPropertyN

Описание

deprecated since version 7, используйте FILTERS с опцией USER.

Блок пользовательских фильтров добавляет на форму пользовательские фильтры. Они аналогичны тем, которые пользователь может добавить сам по нажатию F3, однако их невозможно удалить.

Каждый фильтр задается свойством на форме, которое уже должно быть добавлено на форму ранее.

Параметры

  • formProperty1, ..., formPropertyN

    Список имен свойств на форме, для которых создаются фильтры.

Примеры

CLASS Stock;
name = DATA ISTRING[100] (Stock);

FORM stocks 'Склады'
OBJECTS st = Stock // добавляем группу объектов склады
PROPERTIES name(st) // добавляем свойство name
FILTERS name(st) USER // добавляем пользовательский фильтр по свойству 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 [orderType1] [DESC]
...
formPropertyNameN [orderTypeN] [DESC]

Опции orderType могут указываться после каждого выражения. Поддерживается следующий набор опций:

USER | FIXED

Описание

Блок сортировок добавляет на форму сортировки, которые будут автоматически применяться при чтении любых данных на форме. В одном блоке можно перечислить через запятую любое количество свойств на форме в произвольной последовательности.

Параметры

  • FIRST

    Ключевое слово. Указывает на то, что данные сортировки будут применены первыми, ранее всех остальных.

  • formPropertyName1, ..., formPropertyNameN

    Имена свойств или действий на форме, по которым необходимо осуществлять сортировку.

  • orderOptions1, ..., orderOptionsN

    Опции сортировки для соответствующего свойства.

  • DESC

    Ключевое слово. Указывает на обратный порядок сортировки. По умолчанию используется сортировка по возрастанию.

  • USER | FIXED

    Ключевые слова, определяющие тип сортировки: USER — пользовательская сортировка (по умолчанию), которую можно переопределять из интерфейса. Свойство должно быть предварительно добавлено на форму. FIXED — фиксированная сортировка, которая задаётся только в коде формы.

Примеры

EXTEND FORM onStock // расширяем ранее созданную форму с остатками
ORDERS name(s) // включаем сортировку по наименования склада в списке складов
// Включаем сортировку по возрастанию имени группы, а внутри по убыванию остатка на складе.
// Следует отметить, что в качестве свойства указывается имя свойства на форме groupName,
// а не просто имя свойства nameGroupSku
ORDERS groupName, onStock(st, s) DESC
// Включаем фиксированную сортировку, которая не заменяется пользовательской
ORDERS name(s) FIXED
;