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