Часть 6. Фильтр источника.

В первой части вы узнали, что задавая параметры отчета, можно производить фильтрацию данных отчета. Но кроме этого возможно задать для каждого источника исходную фильтрацию, которая будет действовать независимо от выбора пользователя. Создадим отчет «Реестр продаж за март 2016 года». В отборе выделите ячейку строки «Фильтр» и откройте редактор выражений и напишите следующее выражение:

[!Дата]>=CDATE('01.03.2016') & [!Дата]<=CDATE('31.03.2016')

Фильтр источника Написав этот фильтр, мы говорим программе показать продажи только за март месяц. Кроме этого мы можем фильровать по клиенту, но результат всегда будет только за один месяц. Фильтр источника имеет следующий синтаксис:

"Поле источника" "операция сравнения" "выражение"

Поля родительских форм обозначаются префиксом !. Имена полей подчиненных форм пишутся без префикса. Возможна фильтрация по полям объектов. Например:

[товар|название]=='телевизор'

В отбор попадут товары, в названии которых содержится текст «телевизор». В примере мы написали поле источника без префикса. Это значит, что поле находится в подчиненной форме.

В фильтре используются следующие операции сравнения: =, <> (не равно), <, ⇐, >=, == (содержит текст), # (не содержит текст).

Выражение - это произвольное выражение, пишется также как, например в вычисляемых надписях или в свойстве полей «Выражение». Т. е. вы можете использовать различные функции, арифметические, логические операции и операции сравнения. Если выражение содержит знаки & или |, то выражение берется в круглые скобки.

[Группа]=(IIF(GETVAR('Все записи')=1 & GETVAR('Прочие')=1, 'Прочие', NULL))

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

{[!Цвет]='Красный' | [!Цвет]='Синий' | [!Цвет]='Зеленый'} & [!Фигура]='Квадрат'

Условия могут быть необязательными. Они исключаются из фильтра, если результат выражения равен NULL. Необязательные условия обозначаются вопросительным знаком (?) перед именем поля источника.

[?Группа]=(IIF(GETVAR('Все записи')=1 & GETVAR('Прочие')=1, 'Прочие', NULL)) & [!архив]=0

Обратите внимание, что перед именем поля «Группа» стоит префикс ?. В зависимости от значений переменных, возвращаемых функциями GETVAR результат выражения может быть: Прочие или NULL. Если результатом выражения будет NULL, то из фильтра необязательное условие будет исключено и получится фильтр:

[!архив]=0

Если условий фильтра много, то рекомендуется каждое условие писать с новой строки для улучшения читаемости фильтра.