Язык формул электронной отчетности
Электронная отчетность (ER) обеспечивает мощное взаимодействие для преобразования данных. Язык, используемый для выражения необходимых манипуляций с данными в конструкторе формул ER, напоминает язык формулы в Microsoft Excel.
Базовый синтаксис
Выражения ER могут содержать любые или все из следующих элементов:
Константы
При конструировании выражений можно использовать текстовые и числовые константы (т. е., значения, которые не вычисляются). Например, выражение VALUE ("100") + 20
использует числовую константу 20 и строковую константу "100" и возвращает числовое значение 120.
Конструктор формул электронной отчетности (ER) поддерживает escape-последовательности. Таким образом, можно указать строку выражения, которая должна обрабатываться по-разному. Например, выражение "Leo Tolstoy ""War and Peace"" Volume 1"
возвращает текст строки Лев Толстой «Война и мир», том 1.
Операторы
В следующей таблице показаны арифметические операторы, которые можно использовать для выполнения основных математические операции, например сложение, вычитание, умножение и деление.
Оператор | Значение | Пример |
---|---|---|
+ | Сложение | 1+2 |
- | Вычитание, отрицание | 5-2 , -1 |
* | Умножение | 7\*8 |
/ | Подразделение | 9/3 |
В следующей таблице показываются поддерживаемые операторы сравнения. Эти операторы можно использовать для сравнения двух значений.
Оператор | Значение | пример |
---|---|---|
= | Equal | X=Y |
> | Greater than | X>Y |
< | Less than | X<Y |
>= | Больше или равно | X>=Y |
<= | Меньше или равно | X<=Y |
<> | Не равно | X<>Y |
Кроме того, можно использовать амперсанд (&) как оператор связывания текста. Таким образом можно соединить (сцепить) одну или несколько текстовых строк в единый фрагмент текста.
Оператор | Значение | Пример |
---|---|---|
& | Объединить | "Nothing to print:" & " " & "no records found" |
Приоритет операторов
Порядок, в котором оценены части составного выражения, важен. Например, результат выражения 1 + 4 / 2
различается в зависимости от того, выполняться ли первой операция сложения или деления. Можно использовать скобки для точного определения, как выражение рассчитывается. Например, чтобы указать, что операция сложения должна быть выполнена первой, вы можете изменить предшествующее выражение на (1 + 4) / 2
. Если не указать явно порядок операций, которые необходимо выполнить в выражении, порядок основан на приоритете по умолчанию, назначенный поддерживаемым операторам. В следующей таблице показан приоритет, который назначен каждому оператору. Операторы, которые имеют более высокий приоритет (например, 7) вычисляются перед операторами с более низким приоритетом (например, 1).
Приоритет | Операторы | Синтаксис |
---|---|---|
7 | Группировка | ( … ) |
6 | Доступ к членам | … . … |
5 | Вызов функции | … ( … ) |
4 | Умножение | … * … … / … |
3 | Дополняющая | … + … … - … |
2 | Сравнение | … < … … <= … … => … … > … … = … … <> … |
1 | Разделение | … , … |
Если выражение содержит несколько последовательных операторов, которые имеют одинаковый приоритет, эти операции вычисляются слева направо. Например, выражение 1 + 6 / 2 \* 3 > 5
возвращает true. Рекомендуется использовать скобки для явного указания необходимого порядка операций в выражениях, чтобы выражения было проще читать и обслуживать.
Ссылки
Все источники данных текущего компонента ER, доступные в ходе разработки выражения, можно использовать как именованные ссылки. Текущий компонент ER может быть как сопоставлением модели, так и форматом. Например, текущее сопоставление данных электронной отчетности содержит источник данных ReportingDate, который возвращает значение типа данных Дата и время. Для правильного форматирования этого значения в создаваемом документе можно указать источник данных в выражении как DATETIMEFORMAT (ReportingDate, "dd-MM-yyyy")
.
Всем символам в имени ссылающегося источника данных, которые не представляют букву алфавита, должен предшествовать знак одинарной кавычки ('). Если имя ссылающегося источника данных содержит хотя бы один символ, который не является буквой алфавита, имя необходимо заключить в одинарные кавычки. Например, символы, не являющиеся буквами алфавита, могут быть знаками препинания или любыми другими записанными символами. Далее приводятся некоторые примеры.
- На источник данных Today’s date & time в выражении ER необходимо ссылаться следующим образом:
'Today''s date & time'
. - На метод name() источника данных Customers в выражении ER необходимо ссылаться следующим образом:
Customers.'name()'
.
Если методы источников данных приложения имеют параметры, для вызова этих методов используется следующий синтаксис:
- Если метод isLanguageRTL источника данных System имеет параметр EN-US типа данных Строка, этот метод следует указывать в выражении электронной отчетности как
System.isLanguageRTL("EN-US")
. - Кавычки не требуются, если имя метода содержит только буквенно-цифровые символы. Однако они являются обязательными для метода таблицы, если имя содержит скобки.
При добавлении источника данных System в сопоставление ER, которое относится к классу Global приложения, выражение System.isLanguageRTL("EN-US ")
возвращает логическое значение FALSE. Измененное выражение System.isLanguageRTL("AR")
возвращает логическое значение TRUE.
Можно ограничить способ, которым значения передаются в параметры метода этого типа:
- В методы этого типа могут передаваться только константы. Значения констант определяются во время разработки.
- Для параметров этого типа поддерживаются только простые (основные) типы. Простые типы данных — это целое число, вещественное число, логическое значение, строка.
Пути
Когда выражение ссылается на структурированный источник данных, можно использовать определение пути для выбора конкретного примитивного элемента этого источника данных. Символ точки (.) используется для разделения отдельных элементов структурированного источника данных. Например, текущее сопоставление модели ER содержит источник данных InvoiceTransactions, и этот источник данных возвращает список записей. Структура записи InvoiceTransactions содержит поля AmountDebit и AmountCredit, и оба этих поля возвращают числовые значения. Таким образом, можно создать следующее выражение для расчета суммы счета: InvoiceTransactions.AmountDebit - InvoiceTransactions.AmountCredit
. Конструкция InvoiceTransactions.AmountDebit
в этом выражении — это путь, используемый для доступа к полю AmountDebit источника данных InvoiceTransactions типа Список записей.
Относительный путь
Если путь структурированного источника данных начинается со знака @, это относительный путь. Вместо оставшейся части абсолютного пути иерархической структуры дерева отображается знак @. Следующая иллюстрация показывает пример. Здесь абсолютный путь Ledger.'accountingCurrency()'
указывает на то, что стоимость валюты учета из источника данных Главная книга вводится в поле AccountingCurrency модели данных.
В следующем примере показано, как используется относительный путь. Относительный путь @.AccountNum
указывает на то, что поле AccountNum источника данных Intrastat (которое отображается на один уровень выше поля AccountNum в иерархическом дереве модели данных) используется для ввода номера учетной записи клиента или поставщика в поле AccountNum.
Оставшаяся часть абсолютного пути также отображается в редакторе формул ER.
Дополнительные сведения см. в разделе Использование относительного пути в привязках данных для моделей и форматов электронной отчетности.
Функции
Встроенные функции ER могут использоваться в выражениях ER. Все источники данных контекста выражения (то есть текущее сопоставление модели данных ER или формат ER) могут использоваться в качестве параметров вызывающих функций в соответствии со списком аргументов вызывающей функции. Константы также могут использоваться как параметры вызывающих функций. Например, текущее сопоставление модели ER содержит источник данных InvoiceTransactions, и этот источник данных возвращает список записей. Структура записи InvoiceTransactions содержит поля AmountDebit и AmountCredit, и оба этих поля возвращают числовые значения. Поэтому для вычисления суммы по счету можно создать следующее выражение, использующее встроенную функцию округления ER: ROUND (InvoiceTransactions.AmountDebit - InvoiceTransactions.AmountCredit, 2)
.
При создании сопоставлений моделей ER и отчетов ER можно использовать функции ER из следующих категорий:
- Функции даты и времени
- Функции для работы со списками
- Логические функции
- Математические функции
- Функции для работы с записями
- Текстовые функции
- Функции сбора данных
- Другие функции (характерные для конкретных бизнес-доменов)
- Функции преобразования типов
Расширение перечня функций
ER позволяет расширение перечня функций, используемых в выражениях ER. Для этого требуются некоторые усилия со стороны разработчика. Дополнительные сведения см. в разделе Расширение списка функций электронной отчетности (ER).
Составные выражения
Можно создавать составные выражения, которые используют функции из разных категорий, при условии, что типы данных совпадают. При совместном использовании функций сопоставьте тип данных вывода из одной функции с типом входных данных, который требуется для другой функции. Например, чтобы избежать возможной ошибки «список пустой» (list-is-empty) при привязке поля к элементу формата ER, объедините функции из категории Список с функцией из категории Логическая, как показано в следующем примере. В данном случае формула использует функцию IF для проверки того, пуст ли список IntrastatTotals до того, как он вернет значение требуемой агрегации из этого списка. Если список IntrastatTotals пуст, формула возвращает 0 (нуль).
IF(ISEMPTY(IntrastatTotals), 0.0, IntrastatTotals.aggregated.'$AmountMSTRounded')
Несколько решений
Часто вы можете получить один и тот же результат преобразования данных несколькими способами, используя функции из разных категорий или различных функций из одной и той же категории. Например, предыдущее выражение также может быть настроено с помощью функции COUNT из категории Список.
IF(COUNT (IntrastatTotals)=0, 0.0, IntrastatTotals.aggregated.'$AmountMSTRounded')
Дополнительные ресурсы
Конструктор формул в электронной отчетности
Расширение списка функций электронной отчетности