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

Оператор NEW

Оператор NEW создает действие, которое добавляет объекты заданного класса.

Синтаксис

У оператора две формы.

Множественная форма создает по одному объекту на каждый удовлетворяющий условию набор аргументов и при необходимости записывает каждый созданный объект в указанное свойство:

NEW className WHERE whereExpr [TO propertyId(prm1, ..., prmN)]

Блочная форма создает ровно один объект и запускает следующее действие с доступом к нему по локальному имени:

NEW [alias =] className [AUTOSET] action

Описание

В множественной форме объект создается для каждого набора аргументов, для которого whereExpr не равно NULL. Блок WHERE вводит локальные параметры для перебора; эти параметры соответствуют перебираемым объектам и не являются параметрами создаваемого действия. Если задан TO, созданный объект записывается в первичное свойство propertyId по аргументам prm1, ..., prmN на каждой строке; если TO опущен, созданный объект никуда не записывается.

В блочной форме создается ровно один объект. Следующее за оператором действие читает новый объект по локальному имени alias (или по имени по умолчанию added, если alias опущен). Опция AUTOSET при необходимости включает автозаполнение ссылок на объект-родителей из контекста формы.

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

Параметры

  • className

    Имя пользовательского класса создаваемых объектов. Составной идентификатор. Класс должен быть конкретным.

  • whereExpr

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

  • propertyId

    Идентификатор первичного свойства, в которое записывается созданный объект.

  • prm1, ..., prmN

    Список типизированных параметров, используемых как аргументы propertyId. Должны ссылаться на параметры, введённые в блоке WHERE; ссылка на параметры окружающего контекста не допускается. Количество параметров должно совпадать с количеством параметров propertyId.

  • alias

    Простой идентификатор локального параметра, содержащего созданный объект. Значение по умолчанию — added.

  • AUTOSET

    Ключевое слово. Если задано, после создания объекта платформа записывает его в первичные свойства с опцией AUTOSET, единственный аргумент которых принадлежит классу-родителю className. Для каждого такого свойства платформа считывает текущий активный объект класса значения свойства из контекста формы и записывает его как значение свойства для нового объекта.

  • action

    Контекстно-зависимый оператор действия, описывающий действие, которое выполняется с доступом к созданному объекту через alias.

Примеры

// множественная форма: создать три объекта Sku и записать каждый в addedSkus(i)
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';
}
}

// блочная форма: создать один Sku и инициализировать его свойства
newSku () {
NEW s = Sku {
id(s) <- 425;
name(s) <- 'New Sku';
}
}

// блочная форма с именем по умолчанию
addOrder () {
NEW Order {
date(added) <- currentDate();
}
}