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

Изменение класса (CHANGECLASS, DELETE)

Оператор изменения класса создает действие, которое устанавливает заданный класс всем объектам, значение некоторого свойства (условия) которых не равно NULL. Условие можно не задавать, в этом случае оно считается равным TRUE.

info

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

Если существуют не NULL значения некоторых первичных свойств, для которых "изменяемый" объект присутствует в параметрах или самом значении и не подходит по классам, такие значения автоматически изменяются на NULL.

info

Реализуется такое поведение по аналогии с вычисляемыми и простыми событиями.

Язык

Для объявления действия, реализующего изменение классов объектов, используется оператор CHANGECLASS или оператор DELETE.

Примеры

// удаление объекта
deleteObject(obj) { DELETE obj; }

// удаление всех неактивных товаров
CLASS Article;
active = DATA BOOLEAN (Article);
deleteInactiveArticles() {
// добавляется локальный параметр a, соответствующий перебираемым объектам
DELETE Article a WHERE a IS Article AND NOT active(a);
}
CLASS Document;
date = DATA DATE (Document);

CLASS ClosedDocument : Document;
// переводит все документы с датой старше 2-х недель в статус закрыт
changeStatus() {
CHANGECLASS Document d TO ClosedDocument WHERE sum(date(d), 14) <= currentDate();
}