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

How-to: CRUD

Пример 1

Условие

Есть множество предопределенных типов книг.

CLASS Type 'Тип' {
novel 'Роман',
thriller 'Триллер',
fiction 'Фантастика'
}
name 'Наименование' (Type g) = staticCaption(g) IF g IS Type;

Необходимо создать форму для выбора типа из списка.

Решение

FORM types 'Список типов'
OBJECTS g = Type
PROPERTIES(g) READONLY name

LIST Type OBJECT g
;

Конструкция LIST обозначает, что данная форма будет использоваться при необходимости выбора списка типов (например, при попытке изменения типа для книги).

Пример 2

Условие

Есть набор книг с заданными наименованиями.

CLASS Book 'Книга';
name 'Наименование' = DATA ISTRING[30] (Book) IN id;
к сведению

Следует отметить, что все свойства name рекомендуется добавлять в группу id. Значения этого свойства будут идентифицировать объект в случае нарушения ограничения. Также оно будет добавлено на автоматические формы, если для класса не будут заданы формы редактирования и выбора.

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

Решение

FORM book 'Книга' // форма для отображения "карточки" книги
OBJECTS b = Book PANEL
PROPERTIES(b) name

EDIT Book OBJECT b
;

FORM books 'Книги'
OBJECTS b = Book
PROPERTIES(b) READONLY name
PROPERTIES(b) NEWSESSION NEW, EDIT, DELETE

LIST Book OBJECT b
;

NAVIGATOR {
NEW books;
}

Пример 3

Условие

Есть набор жанров книг с заданными наименованиями.

CLASS Genre 'Жанр';
name 'Наименование' = DATA ISTRING[30] (Genre);

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

Решение

FORM genre 'Жанр'
OBJECTS g = Genre PANEL
PROPERTIES(g) name

EDIT Genre OBJECT g
;

FORM genres 'Жанры'
OBJECTS g = Genre
PROPERTIES(g) READONLY name
PROPERTIES(g) NEWSESSION NEW, EDIT, DELETE
;

FORM dialogGenre 'Жанры'
OBJECTS g = Genre
PROPERTIES(g) READONLY name

LIST Genre OBJECT g
;

NAVIGATOR {
NEW genres;
}

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