Показать / скрыть оглавление

    Синтаксис выражений

    В данном руководстве описывается синтаксис выражения для отчета.

    Синтаксис выражения

    Выражение — это текстовая строка, указывающая, какие данные брать и как их обрабатывать для получения значения. Например, следующее выражение возвращает целочисленное значение 5:

    3 + 2

    Строка выражения может состоять из нескольких строк, содержащих константы, операторы, вызовы функций, поля или параметры, элементы отчета и комментарии:

    /*
    Данное выражение настраивает Видимость элемента в зависимости от полученного значения.
    */
    
    Iif (
      ?ShowTotalAmount == True,
      True,
      False
      )
    

    Константы

    • Строковые константы Заключайте строковые константы в апострофы. Если строка содержит апостроф, удвойте апостроф.

      [Country] == 'France'
      [Name] == 'O''Neil'
      
    • Константы даты и времени Заключайте константы даты и времени в '#'.

      [OrderDate] >= #2018-03-22 13:18:51.94944#
      
    • True
      Логическое истинное значение.

      [InStock] == True
      
    • False
      Логическое значение False..

      [InStock] == False
      
    • Перечисления
      Укажите значение перечисления по его основному целочисленному значению.

      [Status] == 1
      
    • Идентификатор
      Константа Идентификатор заключена в фигурные скобки. Используйте константу Идентификатор только с операторами равенства или неравенства.

      [OrderID] == {513724e5-17b7-4ec6-abc4-0eae12c72c1f}
      
    • Числовой
      Укажите типы числовых констант в виде строки с помощью суффиксов:

      • Int32 (int) - 1
      • Int16 (short) - 1s
      • Byte (byte) - 1b
      • Double (double) - 1.0
      • Single (float) - 1.0f
      • Decimal (decimal) - 1.0m
      Значение Суффикс Пример
      32-bit integer No suffix [CategoryID] == 1
      16-bit integer s [CategoryID] == 1s
      Byte b [CategoryID] == 1b
      Double-precision floating-point number No suffix [Length] == 1.0
      Single-precision floating-point number f [Length] == 1.0f
      Decimal floating-point number m [Price] == 25.0m
    • ?
      Пустая ссылка, не относящаяся ни к какому объекту. Рекомендуется использовать оператор IsNull (Например, "[Region] is null") или логическую функцию IsNull (Например, "IsNull([Region])") вместо ?.

      [Region] != ?
      

    Операторы

    • +
      Прибавляет значение одного числового выражения к другому или объединяет две строки.

      [UnitPrice] + 4
      [FirstName] + ' ' + [LastName]
      
    • -
      Находит разницу между двумя операндами.

      [Price1] - [Price2]
      
    • *
      Умножает значение двух операндов.

      [Quantity] * [UnitPrice]
      
    • /
      Делит первый операнд на второй.

      [Quantity] / 2
      
    • %
      Делит один числовой операнд на другой и возвращает остаток.

      [Quantity] % 3
      
    • |
      Выполняет побитовую операцию ИЛИ с двумя числовыми выражениями. Сравнивает каждый бит своего первого операнда с соответствующим битом второго операнда. Если любой бит равен 1, соответствующий результирующий бит устанавливается в 1. В противном случае соответствующий результирующий бит устанавливается в 0.

      [Number] | [Number]
      
    • &
      Побитовый оператор И. Сравнивает каждый бит своего первого операнда с соответствующим битом второго операнда. Если два бита равны 1, соответствующий результирующий бит устанавливается в 1. В противном случае соответствующий результирующий бит устанавливается в 0.

      [Number] & 10
      
    • ^
      Выполняет операцию побитового исключающего ИЛИ над двумя числовыми выражениями.

      [Number] ^ [Number]
      
    • ==
      Возвращает True , если оба операнда равны; в противном случае возвращается False .

      [Quantity] == 10
      
    • !=
      Возвращает True , если операнды не равны; в противном случае возвращается False .

      [Country] != 'France'
      
    • < Меньше, чем оператор. Используется для сравнения выражений.

      [UnitPrice] < 20
      
    • <=
      Меньше или равно оператору. Используется для сравнения выражений.

      [UnitPrice] <= 20
      
    • >= Больше или равно оператору. Используется для сравнения выражений.

      [UnitPrice] >= 30
      
    • > Больше, чем оператор. Используется для сравнения выражений.

      [UnitPrice] > 30
      
    • In (,,,)
      Проверяет наличие свойства у объекта.

      [Country] In ('USA', 'UK', 'Italy')
      
    • Between (,)
      Указывает диапазон для проверки. Возвращает True, если значение больше или равно первому операнду и меньше или равно второму операнду.

      [Quantity] Between (10, 20)
      
    • And (&&)
      Выполняет логическое соединение двух логических выражений.

      [InStock] And ([ExtendedPrice]> 100)
      [InStock] && ([ExtendedPrice]> 100)
      
    • Or (||)
      Выполняет логическое разъединение двух логических выражений.

      [Country]=='USA' Or [Country]=='UK'
      [Country]=='USA' || [Country]=='UK'
      
    • ~
      Выполняет побитовое отрицание числового выражения.

      ~[Roles] = 251
      
    • Not (!)
      Выполняет логическое отрицание логического выражения.

      Not [InStock]
      ![InStock]
      
    • + Возвращает значение числового выражения (унарный оператор).

      +[Value] = 10
      
    • − Возвращает отрицательное значение числового выражения (унарный оператор).

      -[Value] = 20
      
    • Is Null
      Возвращает True, если выражение является нулевой ссылкой (не ссылающейся ни на какой объект).

      [Region] is null
      

    Приоритет операторов

    Когда выражение содержит несколько операторов, эти операторы оцениваются в следующей последовательности:

    • Буквенные значения
    • Параметры
    • Идентификаторы
    • OR
    • AND
    • '.' квалификатор отношений (левоассоциативный)
    • ==, !=
    • <, >, <=, >=
    • -, + (левоассоциативный)
    • *, /, % (левоассоциативный)
    • NOT
    • Унарный -
    • In
    • Iif
    • Trim(), Len(), Substring(), IsNull()
    • '[]' (для ограничения набора)
    • '()'

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

    Accounts[Amount == 2 + 48 * 2]

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

    Accounts[Amount == (2 + 48) * 2]

    Функции

    Язык выражений включает набор функций, расширяющих возможности выражения:

    • Логические функции
    • Функции даты и времени
    • Математические функции
    • Строковые функции
    • Функции для привязки выражений и вычисляемых полей
    • Функции для хранимых процедур
    • Функции редактора сводных выражений
    • Функции Колибри

    Полный список функций, доступных в выражениях, см. в следующем разделе: Функции в выражениях.

    Чувствительность к регистру

    Операторы чувствительны к регистру. В этом случае следующее выражение фильтра оценивается как False:

    Lower(Name) == Upper(Name)

    Избегание операторов

    Вы можете пометить имя поля, похожее на оператор, с помощью символа @. В приведенном ниже выражении @Or интерпретируется как поле с именем Or , а не как логический оператор OR.

    @Or = 'value'

    Экранирующие символы

    Используйте обратную косую черту ( \ ), чтобы отобразить символ как строку, как показано ниже:

    \[

    \\

    \'

    Используйте апостроф (') для отображения строк:

    'A parameter''s value is:' + ?parameter1

    Поля данных и вычисляемые поля

    Заключите поле данных или имя вычисляемого поля в квадратные скобки ([ и ]):

    [UnitPrice]
    

    Убедитесь, что поле с указанным именем существует в источнике данных отчета и члене данных.

    Параметры отчета

    Используйте следующий синтаксис для вставки параметров отчета в выражение:

    • Введите вопросительный знак перед именем параметра.

      ?parameter1

    Перечисления

    Выполните следующие действие, чтобы присвоить свойству значение перечисления:

    • Укажите значение перечисления по его базовому целочисленному значению.

      [Borders] = 1

    Комментарии

    Язык выражений поддерживает комментарии. Например:

    /*
    Это комментарий внутри выражения.
    */
    

    Комментарии начинаются с символов /* и заканчиваются соответствующими символами */.

    В начало страницы Справочная система Колибри. Группа компаний Октоника, 2022