Мельница данных   (17.11.2017)
Агрегат

Агрегат определяет агрегированное значение над экземплярами определенного класса, удовлетворяющими условиям агрегации. Агрегаты бывают следующих типов:

  • any - первый попавшийся объект. Результат имеет тип ссылки на объект агрегируемого класса.
           
    any(TObject with Master = Self.Parent)  
    //первый попавшийся объект, имеющий значение 
    //свойства Master равным значению свойства 
    //Parent текущего (контекстного) объекта.
    
  • count - количество объектов. Результат имеет целочисленный тип.
           
    count(TObject with Master = Self.Parent) 
    //количество объектов, имеющих значение свойства 
    //Master равным значению свойства Parent 
    //текущего объекта.
    
  • sum - сумма значений свойства, поля или функции объектов. Результат имеет тип суммируемого поля, свойства или функции
           
    sum(TExam.Mark with Master = LStudent) //сумма 
    //баллов студента по его испытаниям
    
  • max, min - соответственно максимальное и минимальное значений свойства, поля или функции объектов. Результат имеет тип агрегируемого поля, свойства или функции
           
    min(TObject.Created) // момент создания первого 
    //объекта Системы.
    

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

  1. Контекстная переменная (для выражений условий отбора доменов)
  2. Имя элемента перечисления
  3. Имя класса. Если это имя агрегируемого класса, то дальнейшие разыменования относятся к агрегируемому объекту
  4. Имя поля
  5. Имя метода
  6. Имя свойства
  7. Локальная переменная
  8. Параметр