How-to: Фильтрация и сортировка
Пример 1
Условие
Есть остатки книг на складах.
CLASS Book 'Книга';
name 'Наименование' = DATA ISTRING[100] (Book);
CLASS Stock 'Склад';
name 'Наименование' = DATA ISTRING[100] (Stock);
// для примера сделано первичным свойством, хотя обычно оно вычисляемое
balance 'Остаток' = DATA INTEGER (Book, Stock);
Необходимо создать форму для отображения остатков книг на заданном складе в алфавитном порядке.
Решение
FORM onStockObject 'Остатки'
OBJECTS s = Stock PANEL
PROPERTIES(s) name SELECTOR
OBJECTS b = Book
PROPERTIES READONLY name(b), balance(b, s)
ORDERS name(b)
// Вариант 1
FILTERS balance(b, s)
// Вариант 2
FILTERGROUP bal
FILTER 'С положительным остатком' balance(b, s) > 0 'F10'
FILTER 'С отрицательными остатком' balance(b, s) < 0 'F9'
FILTER 'С остатком' balance(b, s) 'F8' DEFAULT
FILTER 'Без остатка' NOT balance(b, s) 'F7'
;
Вариант 1 устанавливает принудительный фильтр, который пользователь не сможет снять. Вариант 2 дает пользователю возможность выбирать между предопределенными критериями (по умолчанию будет использоваться тот, для которого установлена опция DEFAULT
).