Функция «сортироватьПоУбыванию»
Функция сортироватьПоУбыванию располагает элементы списка по убыванию в зависимости от значения выбранного поля или выражения.
Например, список позиций можно отсортировать по цене — от большей к меньшей — и в таком порядке вывести позиции в документ.
Результатом функции является отсортированный список, который можно передать в цикл или табличный цикл вместо исходного списка.
Синтаксис
сортироватьПоУбыванию(элемент из список, выражение)
элемент— имя текущего элемента списка, которое используется в выражении сортировки;список— список, элементы которого необходимо отсортировать;выражение— значение, по которому определяется порядок элементов.
Например, чтобы отсортировать список1 по полю цена, используется выражение:
сортироватьПоУбыванию(позиция из список1, позиция.цена)
Функция располагает элементы по убыванию значения позиция.цена.
Поскольку результат функции является списком, сортироватьПоУбыванию можно указать в выражении метки «Цикл» вместо исходного списка:
{цикл(отсортированнаяПозиция из сортироватьПоУбыванию(позиция из список1, позиция.цена))}
Пример
Предположим, список1 содержит следующие позиции:
Монитор — 15000
Клавиатура — 800
Принтер — 12000
Мышь — 600
Нужно вывести позиции в порядке уменьшения цены.
Для этого в выражении метки «Цикл» вместо исходного списка используется функция сортироватьПоУбыванию:
{цикл(отсортированнаяПозиция из сортироватьПоУбыванию(позиция из список1, позиция.цена))}
{отсортированнаяПозиция.название} — {отсортированнаяПозиция.цена}
{/цикл}
Здесь:
цикл— открывающая метка цикла;отсортированнаяПозиция— имя текущего элемента отсортированного списка. Оно используется в теле цикла для обращения к его полям;сортироватьПоУбыванию(...)— функция, которая сортируетсписок1по убыванию;позиция— имя текущего элемента исходного списка, которое используется внутри функциисортироватьПоУбыванию;список1— исходный список;позиция.цена— поле, по значению которого выполняется сортировка;{отсортированнаяПозиция.название}— выводит название текущей позиции;{отсортированнаяПозиция.цена}— выводит цену текущей позиции;{/цикл}— закрывающая метка цикла.
В результате позиции будут выведены в порядке уменьшения цены:
Монитор — 15000
Принтер — 12000
Клавиатура — 800
Мышь — 600
Использование в табличном цикле
В табличном цикле функция применяется по тому же принципу — сортироватьПоУбыванию(...) указывается вместо исходного списка.
Например:
{т_цикл(элТабл из сортироватьПоУбыванию(...))}
Ошибки
Функция вернёт ошибку, если:
- вместо списка передано значение другого типа;
- выражение сортировки записано некорректно или возвращает значение, которое нельзя использовать для сортировки.