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

Функция «сортироватьПоУбыванию»

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

Например, список позиций можно отсортировать по цене — от большей к меньшей — и в таком порядке вывести позиции в документ.

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

Синтаксис

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

Например, чтобы отсортировать список1 по полю цена, используется выражение:

сортироватьПоУбыванию(позиция из список1, позиция.цена)

Функция располагает элементы по убыванию значения позиция.цена.

Поскольку результат функции является списком, сортироватьПоУбыванию можно указать в выражении метки «Цикл» вместо исходного списка:

{цикл(отсортированнаяПозиция из сортироватьПоУбыванию(позиция из список1, позиция.цена))}

Пример

Предположим, список1 содержит следующие позиции:

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

Нужно вывести позиции в порядке уменьшения цены.

Для этого в выражении метки «Цикл» вместо исходного списка используется функция сортироватьПоУбыванию:

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

Здесь:

  • цикл — открывающая метка цикла;
  • отсортированнаяПозиция — имя текущего элемента отсортированного списка. Оно используется в теле цикла для обращения к его полям;
  • сортироватьПоУбыванию(...) — функция, которая сортирует список1 по убыванию;
  • позиция — имя текущего элемента исходного списка, которое используется внутри функции сортироватьПоУбыванию;
  • список1 — исходный список;
  • позиция.цена — поле, по значению которого выполняется сортировка;
  • {отсортированнаяПозиция.название} — выводит название текущей позиции;
  • {отсортированнаяПозиция.цена} — выводит цену текущей позиции;
  • {/цикл} — закрывающая метка цикла.

В результате позиции будут выведены в порядке уменьшения цены:

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

Использование в табличном цикле

В табличном цикле функция применяется по тому же принципу — сортироватьПоУбыванию(...) указывается вместо исходного списка.

Например:

{т_цикл(элТабл из сортироватьПоУбыванию(...))}

Ошибки

Функция вернёт ошибку, если:

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