Перейти к содержанию

сортировать

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

Синтаксис

сортировать(элемент из список, выражение)

Параметры:

  • элемент — имя текущего элемента списка. Задаётся непосредственно в функции и используется в выражении сортировки;
  • список — идентификатор спискового поля, элементы которого необходимо отсортировать;
  • выражение — значение, по которому определяется порядок элементов.

Имя текущего элемента можно выбрать самостоятельно. Оно используется только внутри функции.

Список с простыми элементами

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

Например:

сортировать(число из списокЧисел, число)

Здесь:

  • списокЧисел — идентификатор спискового поля;
  • число — имя текущего элемента списка;
  • второе число — значение, по которому выполняется сортировка.

Список с составными элементами

Если элементы списка являются составными полями, в выражении указывается вложенное поле, по которому необходимо выполнить сортировку.

Например:

сортировать(товар из товары, товар.стоимость)

Здесь:

  • товары — идентификатор спискового поля;
  • товар — имя текущего элемента списка;
  • стоимость — идентификатор вложенного поля;
  • товар.стоимость — значение, по которому выполняется сортировка.

Возвращаемое значение

Функция возвращает отсортированную копию исходного списка.

Исходный список при этом не изменяется.

Чтобы вывести элементы отсортированного списка в документе, используйте результат функции сортировать внутри конструкции цикл.

Примеры

Сортировка списка чисел

Допустим, в шаблоне есть списковое поле с идентификатором:

списокЧисел

Оно содержит значения:

Позиция Значение
1 8
2 3
3 12
4 5

Чтобы вывести значения по возрастанию, используйте функцию сортировать внутри конструкции цикл:

{цикл(число из сортировать(элемент из списокЧисел, элемент))}
{число}
{/цикл}

Здесь:

  • списокЧисел — идентификатор исходного спискового поля;
  • элемент — имя текущего элемента внутри функции сортировать;
  • второе элемент — значение, по которому выполняется сортировка;
  • сортировать(...) — возвращает отсортированную копию списка;
  • число — имя текущего элемента отсортированного списка внутри конструкции цикл.

Результат:

3
5
8
12

Исходный список списокЧисел при этом остаётся без изменений.

Сортировка товаров по стоимости

Допустим, в шаблоне есть списковое поле с идентификатором:

товары

Каждый элемент списка является составным полем и содержит:

  • наименование — идентификатор поля с названием товара;
  • стоимость — идентификатор поля со стоимостью товара.

Исходный список:

Позиция наименование стоимость
1 Монитор 15000
2 Клавиатура 800
3 Принтер 12000
4 Мышь 600

Чтобы вывести товары в порядке увеличения стоимости:

{цикл(позиция из сортировать(товар из товары, товар.стоимость))}
{позиция.наименование} — {позиция.стоимость}
{/цикл}

Здесь:

  • товары — идентификатор исходного спискового поля;
  • товар — имя текущего элемента внутри функции сортировать;
  • товар.стоимость — значение, по которому выполняется сортировка;
  • сортировать(...) — возвращает копию списка товары с изменённым порядком элементов;
  • позиция — имя текущего элемента отсортированного списка внутри конструкции цикл;
  • позиция.наименование и позиция.стоимость — обращения к полям текущего элемента.

Результат:

Мышь — 600
Клавиатура — 800
Принтер — 12000
Монитор — 15000

Сортировка по результату выражения

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

Допустим, список товары дополнительно содержит поле:

количество

Исходные данные:

наименование стоимость количество
Стул 3500 4
Стол 7500 1
Шкаф 12000 2

Нужно вывести товары по возрастанию общей стоимости позиции — стоимость × количество.

Выражение:

{цикл(позиция из сортировать(товар из товары, товар.стоимость * товар.количество))}
{позиция.наименование}
{/цикл}

Для каждого элемента функция вычисляет значение выражения:

наименование Расчёт Значение для сортировки
Стул 3500 × 4 14000
Стол 7500 × 1 7500
Шкаф 12000 × 2 24000

Результат:

Стол
Стул
Шкаф

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