Документация на documentation.lsfusion.org скоро станет недоступной, используйте, пожалуйста, https://docs.lsfusion.org/ru.

Перейти к концу метаданных
Переход к началу метаданных

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

Изменяемые свойства

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

Помимо вышеперечисленных, изменяемыми свойствами также являются свойства, созданные при помощи оператора экстремума и логических операторов (которые по сути являются разновидностями оператора выбора)

Язык

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

Примеры

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
 // установить всем клиентам у кого сумма заказа больше 100 скидку в размере 15 процентов
CLASS Customer;
discount = DATA NUMERIC[5,2] (Customer);
totalOrders = DATA NUMERIC[14,2] (Customer);
setDiscount  { 
    discount(Customer c) <- 15 WHERE totalOrders(c) > 100;
}

discount = DATA NUMERIC[5,2] (Customer, Item);
in = DATA BOOLEAN (Item); 
// изменить скидку для выбранных товаров для клиента
setDiscount (Customer c)  { 
    discount(c, Item i) <- 15 WHERE in(i);
}
  
// скопировать свойство g в свойство f
f = DATA INTEGER (INTEGER);
g = DATA INTEGER (INTEGER);
copyFG  { 
    f(a) <- g(a);
}

  • Нет меток