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

Добавление объектов (NEW)

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

Также в этом операторе можно задавать первичное свойство, в значения которого будут записаны добавленные объекты. Если условие не задано, по умолчанию этим свойством будет свойство addedObject.

Пользовательский класс, объекты которого будет создавать этот оператор, должен быть конкретным.

Добавлять объекты в систему также можно при помощи соответствующей опции в операторе цикла.

Язык

Для объявления действия, реализующего добавление объектов, используется оператор NEW. Для реализации схожей функциональности также используется опция NEW в операторе FOR.

Примеры


newSku () {
LOCAL addedSkus = Sku (INTEGER);
NEW Sku WHERE iterate(i, 1, 3) TO addedSkus(i);
FOR Sku s = addedSkus(i) DO {
id(s) <- 425;
name(s) <- 'New Sku';
}
}
name = DATA STRING[100] (Store);

testFor {
LOCAL sum = INTEGER ();
FOR iterate(i, 1, 100) DO {
sum() <- sum() (+) i;
}

FOR in(Sku s) DO {
MESSAGE 'Sku ' + id(s) + ' was selected';
}

FOR Store st IS Store DO { // пробегаем по всем объектам класса Store
FOR in(st, Sku s) DO { // пробегаем по всем Sku, для которых in задано
MESSAGE 'There is Sku ' + id(s) + ' in store ' + name(st);
}

}
}

newSku () {
NEW s = Sku {
id(s) <- 425;
name(s) <- 'New Sku';
}
}

copy (Sku old) {
NEW new = Sku {
id(new) <- id(old);
name(new) <- name(old);
}
}

createDetails (Order o) {
FOR in(Sku s) NEW d = OrderDetail DO {
order(d) <- o;
sku(d) <- s;
}
}