Выражение представляет собой набор инструкций по произведению определенных действий (операций) над объектами (операндами). Операции различаются по типу операндов и типу результата выполнения операции – логические, арифметические, строковые (текстовые) и т.д. Выражения в системе используются для наложения различных условий на данные при поиске (фильтрации) данных, отборе данных для отчетов, проверке правильности ввода данных и т.д. Для создания и редактирования предназначен специальный программный модуль - редактор выражений. Редактор предоставляет два режима работы:
режим графического конструктора, с которым могут работать пользователи, не знакомые с языками программирования (подраздел 2.2);
режим текстового редактора для создания выражений на языке XML (подраздел 2.7).
Подраздел 2.1 описывает структуру и правила создания выражений. При этом используется терминология и обозначения, принятые в графическом конструкторе.
Структура выражения
Возможные операции над объектами можно условно разделить на две группы: операции и функции. Деление условное, т.к. функция – тоже операция над данными, но операции и функции, как правило, имеют различное написание (синтаксис):
операция: ОПЕРАНД1 ОПЕРАТОР ОПЕРАНД2,
функция: ФУНКЦИЯ (АРГУМЕНТ1, АРГУМЕНТ2,
Здесь ОПЕРАТОР – это условное обозначение операции, ФУНКЦИЯ – заголовок (имя) функции.
Выражения могут быть вложенными, т.е. в качестве операнда или аргумента может выступать как функция, так и выражение.
В качестве операндов выражений могут выступать объекты, перечисленные в Табл. 2.1. Операнды могут содержать значения (данные) различных типов (типы данных описаны в п. 1.2 Руководства).
Все возможные виды операторов и описание соответствующих им операций приведены в Табл. 2.2, перечень функций – в Табл. 2.3
Табл. 2.1 Виды операндов выражений
Операнд | Элемент интерфейса конструктора | Описание |
Атрибут сущности | Панель атрибутов | Общая информация о сущностях и их атрибутах приведена в п. 1 настоящего руководства. Использование атрибутов сущностей в выражениях описано в п.2.3.1. |
Константное значение (константа) | Панель инструментов, | Величина, значение которой не меняется в процессе выполнения программы и фиксируется при создании условия. Применение константных значений описано в п. 2.3.2. |
Системный параметр | Панель инструментов, | Параметр, значение которого определяется в момент вычисления результата выражения. Перечень системных параметров ограничен и создается на этапе разработки системы. Применение системных параметров описано в п. 2.3.3. |
Пользовательский параметр | Панель инструментов, | Пользовательский параметр, значение которого запрашивается приложением у пользователя в момент вычисления результата выражения. Применение пользовательских параметров описано в п. 2.3.4. |
Табл. 2.2 Операторы, используемыые в выражениях
Элемент интерфейса | Оператор | Тип операнда | Тип результата | Описание |
---|---|---|---|---|
Логическое ИЛИ | Лог. | Лог. | Объединение операндов – логических значений или выражений (условий) через «или», т.е. положительным результатом выражения будет выполнение любого из этих условий. | |
Логическое И | Лог. | Лог. | Объединение условий через «и», т.е. положительным результатом выражения будет одновременное выполнение всех этих условий. | |
Похоже | Строка | Лог. | Возвращает положительный результат, если значение удовлетворяет определенному шаблону. Подробное описание оператора и применение шаблонов приведено в п. 2.4.1 Руководства. | |
Равно | Число, строка | Лог. | Точное равенство операндов – чисел, строк, дат и т.д. Регистр символов строки данной операцией игнорируется, т.е. строки «Текст» и «текст» равны. | |
Не равно | Число, строка | Лог. | Операнды не должны быть равны друг другу. В случае строк это означает, что строки не должны совпадать. | |
Меньше или равно | Число | Лог. | Значение первого (левого) операнда должно быть меньше или равно значению второго (правого). | |
Больше или равно | Число | Лог. | Значение первого (левого) операнда должно быть больше или равно значению второго (правого). | |
Меньше | Число | Лог. | Значение первого (левого) операнда должно быть меньше значения второго (правого). | |
Больше | Число | Лог. | Значение первого (левого) операнда должно быть больше значения второго (правого). | |
In |
Входит в… | Любой | Лог. | Значение первого операнда должно быть равно значению одного из элементов перечисления (списка значений) второго операнда, см. п. 2.4.2 |
Not | Не | Лог. | Лог. | Оператор отрицания, применяется только в связке с другими операторами. См. п.2.4.3. |
Is | I | Объект | Лог. | Оператор накладывает условие на сущность, на которую указывает атрибут-ссылка. Подробно см. п.2.4.4. |
Exact IS | Именно это | Объект | Лог. | Оператор накладывает условие на сущность, на которую указывает атрибут-ссылка. Подробно см. п.2.4.5. |
Сложение | Число, Строка | Число, Строка | Арифметический оператор сложения, либо оператор сложения (конкатенации) строк. | |
Вычитание | Число | Число | Арифметический оператор вычитания. | |
Умножение | Число | Число | Арифметический оператор умножения. | |
Деление | Число | Число | Арифметический оператор деления. | |
Скобки | - | - | Скобки определяют очередность вычислений (см. п. 2.3.7). |
Табл. 2.3 Операторы, используемыые в выражениях
Элемент интерфейса | Функции | Тип аргумнта | Тип результата | Описание |
---|---|---|---|---|
Разность дат | Дата | Целое число | Функция, позволяющая вычислить разность между двумя датами в различных единицах измерения – годах, месяцах, днях и т.д. Применение функции описано в п. 2.5.1. | |
Прибавить к дате | Дата | Дата | Функция, позволяющая вычислить дату путем добавления периода к исходной дате. Период может быть выражен в годах, месяцах, днях и т.д. Применение функции описано в п.2.5.2. | |
Получить часть даты | Дата | Целое число | Функция получения части даты в виде числа (год, месяц, номер недели в году и т.д.). Применение функции описано в п.2.5.3. | |
Подстрока | Текст | Текст | Функция получения заданной части текстовой строки (подстроки). Применение функции описано в п.2.5.4. | |
Длина строки | Текст | Целое число | Функция вычисления длины строки в символах. Применение функции описано в п.2.5.5. | |
Значение функции | Число | Число | Вычисление математической функции. Руководство содержит описание наиболее употребительных функций: · Получение абсолютного значения (п.2.5.6) | |
Привести к типу | Любой | Любой | Функция позволяет преобразовать значение аргумента функции к требуемому типу данных. Применение функции описано в п.2.5.7. | |
Удовлет-воряет выражению | Текст | Целое число | Функция позволяет анализировать значение аргумента с помощью регулярных выражений. Применение функции описано в п.2.5.8. | |
Условие | Логический | Любой | Позволяет вставить в выражение условную конструкцию вида «Если … тогда … иначе …». Применение функции описано в п.2.5.9. | |
Количество элементов в коллекции | Объект | Целое число | Функция подсчета количества элементов в указанной коллекции элементов типа «Объект». Применение функции описано в п.2.6.1. | |
Выбрать | Сущ-ность | Коллекция | Функция позволяет сделать выборку значений определенного атрибута заданной сущности. Применение функции описано в п.2.6.2. | |
Существует | Сущность | Логический | Функция позволяет проверить факт существования данных сущности, удовлетворяющих определенным условиям. Применение функции описано в п.2.6.3. | |
Поиск по дереву | Сущ-ность | Логический | Функция анализа дерева наследования. Применение функции описано в п.2.6.4. |
Графический конструктор
Интерфейс конструктора
Форма редактора выражений в режиме конструктора показана на Рис. 2.1.
Рис. 2.1 Форма редактора выражений
Форма состоит из четырех разделов:
Управляющая панель (в верхней части формы).
Панель атрибутов сущности (левая часть формы).
Панель инструментов (часть формы между панелью атрибутов и панелью выражения).
Панель выражения или редактирования выражения (правая часть формы).
Между панелями атрибутов, инструментов и выражения расположены сплиттеры, которые позволяют настраивать размеры областей друг относительно друга.
Содержимое управляющей панели описано в Табл. 2.4. Функции конструктора, не представленные на панели инструментов, описаны в Табл. 2.5.
Табл. 2.4 Кнопки управляющей панели
Режим конструктора | Включение режима конструктора выражений. Включение кнопки автоматически отключает кнопку режима XML-редактора. | |
Режим XML-редактора | Переход в режим XML-редактора. Включение кнопки автоматически отключает кнопку режима конструктора. С помощью этого режима также можно просмотреть XML-код выражения, созданного с помощью конструктора. | |
Отменить действие | Отменить последнее изменение в выражении. Также для вызова данной функции можно применить сочетание клавиш [Ctrl+Z]. | |
Вернуть действие | Вернуть последнее отмененное изменение. | |
Отображать ошибки | Включает/отключает режим отображения ошибок (по умолчанию включен), когда ошибочные конструкции выделяются красной рамкой. Ситуация, когда режим проверки может быть отключен, описана в п. 2.8. | |
Упорядочить параметры | Функция предназначена для управления порядком элементов в списке пользовательских параметров (см. п. 2.7). |
Табл. 2.5 Функции конструктора, не представленные на управляющей панели
Пункт контекстного меню | Клавиша | Описание |
- | Одинарный клик мышью | Выделение элемента выражения, на область которого наведен указатель мыши. Клик на заголовке логического оператора вызывает выделение всей конструкции, связанной с этим оператором. |
- | Двойной клик мышью | Редактирование элемента выражения, на область которого наведен указатель мыши. |
Удалить | [Delete] | Удаление выделенного элемента выражения. |
Копировать | [Ctrl+C] | Копирование в буфер обмена содержимого выделенного элемента выражения. |
Вставить | [Ctrl+V] | Вставка на место выделенного элемента выражения содержимого буфера обмена. |
В нижней части панели атрибутов располагается ярлык с отображением наименования сущности, с которой в данный момент работает конструктор (текущей сущности). Панель содержит список атрибутов указанной сущности (см. п.3 настоящего руководства) и служит для поиска нужных атрибутов и включения их в выражение.
Панель инструментов (средняя часть формы между панелью атрибутов и панелью условий) содержит кнопки, соответствующие различным элементам условия (виды операндов, операторы, функции). Кнопки панели инструментов описаны в таблицах, соответствующих видам элементов выражений:
Табл. 2.1 Виды операндов выражений,
Табл. 2.2 Операторы, используемые в выражениях,
Табл. 2.3 Функции, используемые в выражениях.
Кнопки двойных стрелок, появляющиеся в верхней и нижней части панели инструментов, служат для пролистывания панели инструментов, если она не помещается целиком в области формы. Двойной щелчок мышью на правом сплиттере автоматически устанавливает такой размер панели инструментов, чтобы на нем помещались все кнопки.
Панель выражения служит для отображения и редактирования выражения. Способ отображения и приемы работы с выражением описаны в п. 0. Начать создание выражения можно перетаскиванием элемента панели атрибутов или любого элемента панели инструментов конструктора.
Последовательность добавления элементов на панель редактирования выражений не имеет значения, т.к. добавленное условие в любой момент времени может быть отредактировано (изменены как операнды, так и операторы выражения).
В подпунктах настоящего раздела подробно описаны способ представления выражения и приемы работы с элементами логических выражений (п.2.2.2). Далее описана работа с основными видами элементов: атрибут сущности (п. 2.3.1), константное значение (п. 2.3.2), параметр (пп. 2.3.3 и 2.3.4), скобки (п. 2.3.7), оператор (п. 2.3.5) и функция (п. 2.3.6).
Особенности применения некоторых операторов и функций описаны в соответствующих разделах:
п. 2.4 Применение отдельных операторов,
п. 2.5 Применение функций,
п. 2.6 Применение функций для работы с объектами.
Графическое представление выражения
Операция может быть представлена двумя способами:
«объемное» представление логической операции, т.е. использующей логический оператор «И»/«ИЛИ» (см. Рис. 2.2),
универсальное представление операции (см. Рис. 2.3).
Рис. 2.2 Представление логического выражения «И»/«ИЛИ»
Рис. 2.3 Универсальное представление выражения
Область операнда в свою очередь также может содержать выражение, представленное любым из вышеупомянутых видов, а также функцию. Т.е. описанные выше блоки могут быть вложенными друг в друга. Двойной клик мышью на пиктограмме логического оператора «И»/«ИЛИ» сворачивает конструкцию следующим образом:
Это может быть полезным при редактировании больших выражений сложной структуры.
Функция на панели редактирования может быть представлена одним из двух способов, представленных на Рис. 2.4, Рис. 2.5. В качестве аргумента функции может выступать другая функция или операция, возвращающая значение требуемого типа.
Для редактирования выражения, содержащего функцию, используются те же методы, что и в операциях: контекстное меню, двойной клик на аргументе функции, перетаскивание.
Рис. 2.4 Блок функции (1 вариант)