Основы синтаксиса | A-TECHS

Основы синтаксиса

Выражения источники данных не зависят от регистра, т.е. их можно писать как большими, так и маленькими буквами.

Источник данных состоит из произвольного количества секций разделенных символом «|«. Секция представляет собой функцию, которая производит некие действия над исходными данными и возвращает результат. Источник данных работает по принципу конвейера: секции выполняются последовательно слева направо, на вход следующей секции ( функции ) подается результат выполнения предыдущей функции до тех пор пока не закончится вычисление выражения и мы не получим результат.

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

conv.png

Рисунок 1. Принцип конвейера.

В источнике данных могут быть использованы секции следующего вида:

  • Имя Журнала или Справочника. Обязательная первая секция.
  • Фильтры. Функции, позволяющие отфильтровать исходные данные.
  • Функции, извлекающие данные.
  • Функции, обеспечивающие дополнительную обработку данных.
  • Агрегатные функции.

Кратно поясним назначение упомянутых секции.

Имя Журнала или Справочника

Источник данных начинается с имени Журнала или имени Справочника. В случае справочника перед именем необходимо добавлять ключевое слово Catalog через точку.

Пример
Деньги — это имя журнала, Catalog.Склад — это имя справочника.


Примечание . Важно отметить, что используются именно имена, а не заголовки. Подробнее про имена можно посмотреть в статьях: 

Создание пользовательского справочника,

Создание журнала.


 Фильтры

При необходимости к исходным данным могут быть применены функции-фильтры. Существует функция Period() для фильтрации по периоду записей журнала. Кроме того в выражении могут быть использованы функции, соответствующие именам колонок типа Справочник. Например, если в журнале существует колонка Склад, то в источнике данных может быть использована функция фильтр Склад(). В качестве аргументов фильтры принимают имена или идентификаторы элементов.

Фильтры следует располагать до других функций.

Функции, извлекающие данные

Функции GroupBy(), Select(), First(), Last() располагаются после фильтров. Эти функции извлекают данные из Журналов/Справочников, после чего данные могут быть дополнительно обработаны.

Функции дополнительной обработки данных

Функции OrderBy(), Having(), Compute() и пр. позволяют выполнить дополнительную обработку данных: сортировку, применение дополнительных условий, простейшие вычисления. Данные функции имеет смысл применять после функций, извлекающих значения.

В итоге из рассмотренных секций мы может создать источник данных. Рассмотрим для примера выражение:

Товары | Склад(основной) | GroupBy(Product, Quantity, Amount) | Compute( Price, Amount/Quantity) | OrderBy( Price Desc ) 

Данное выражение можно легко «перевести» на человеческий язык:

Берем журнал Товары | Отбираем данные по складу основной | Выполняем группировку количества (quantity) и суммы (amount) по номенклатуре (product) | вычисляем цену и записываем её в новую колонку Price |  Сортируем данные по цене по убыванию.

Перечень функций

В таблице ниже приведет перечень доступных функций. Функции сгруппированы по назначению. Эта классификация достаточно условная и не носит принципиальный характер, а скорее предназначена для лучшего структурирования списка функций.

Функция Тип результата Описание
Извлечение данных
GroupBy Таблица Группирует данные по указанным полям.
Select Таблица Выбирает указанные поля
Last Таблица Срез последних
First Таблица Срез первых
Turnover Таблица Получает обороты
   Обработка данных
Compute Таблица Выполняет простейшие вычисления
DeleteColumn Таблица Удаляет колонку таблицы
Distinct Таблица Выбирает уникальные строки таблицы
Having Таблица Выполняет фильтрацию извлеченных данных
OrderBy Таблица Сортировка записей таблицы
Top Таблица Выбирает первые записи таблицы
Прочие функции
GetTitle  Таблица Получает заголовки справочников
List  Список Извлекает список значений из колонки таблицы
Value  Значение Извлекает значение из таблицы или списка
Соединения и объединения
LeftJoin Таблица Левое соединение таблиц
FullJoin Таблица Полное соединение таблиц
UnionAll Таблица Объединение всех записей таблиц
Union Таблица Объединение уникальных записей таблиц
VLookUp Таблица Выполняет поиск по условию и присоединяет найденные данные к исходной таблице
Агрегатные функции
Average Число Среднее значение ресурса в выбранных записях
Count Число Количество выбранных записей
Max Число Максимальное значение указанного поля в выбранных записях
Min Число Минимальное значение указанного поля в выбранных записях
Sum Число Сумма по выбранным записям, по указанному полю
Партионный учет
DistributeByBatchFifo Таблица Распределить по партиям ФИФО
DistributeByBatchLifo Таблица Распределить по партиям ЛИФО