Применение фильтров

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

1) В любом окне, содержащем какую либо таблицу, работает «Быстрый фильтр». При помощи «Быстрого фильтра» можно отфильтровать все записи, которые содержат заданную подстроку в любом из строковых полей таблицы. Вызывается «Быстрый фильтр» при  помощи комбинации клавиш <Ctrl+Shift+F> (раскладка клавиатуры должны быть латинской). При этом появляется окно, в котором в поле «Искать» нужно ввести искомую подстроку и нажать кнопку [Включить фильтр].  После окончания поиска важно не забыть отключить фильтр: <Ctrl+Shift+F> и затем кнопка [Отключить].

Окно "Быстрого фильтра" программы Автопрокат

2) Настраиваемый фильтр, который вызывается нажатием на кнопку [Выбрать фильтр], расположенную справа от поля «Фильтр» в верхней части окна. После нажатия этой кнопки появляется окно «Фильтры» со списком заранее написанных фильтров, относящихся к данной таблице (окну). Нажатие на кнопку [Выбрать] в окне «Фильтры» включает выбранный фильтр. При этом название фильтра видно в поле «Фильтр» в верхней части окна. Если записей в таблице очень много, то сразу после включения фильтра может быть достаточно долгий период ожидания - пока программа просмотрит все записи и отфильтрует из них записи, удовлетворяющие условию фильтра. Те же самые фильтры используются также и при печати различных отчетов и списков, что очень сильно повышает полезность отчетов. Особенно если применять фильтры совместно с указанием периода (с… по…) и других ограничений (автомобиль, клиент, операция и т.п.).

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

Окно "Фильтры" программы Автопрокат

- Кнопка выбора фильтра

Добавление, изменение и удаление записей в списке фильтров производится при помощи следующих кнопок, расположенных в верхней части окна:

- Добавить новую запись о фильтре
- Изменить (открыть) существующую запись
- Удалить запись о фильтре
- Создать новую запись на основе существующей (копировать старую запись в новую)

- Кнопки для упорядочивания (перемещения) записей в списке фильтров.

Окно формы записи о фильтре:

Окно "Фильтр" программы Автопрокат

  • Таблица - Название таблицы, для которой будет применяться данный фильтр. Это поле заполняется автоматически и его изменить нельзя
  • Название фильтра - Название фильтра, по которому фильтр будет выбираться конечным пользователем
  • Выражение - Выражение фильтра на языке Clarion. После вычисления выражение должно принимать значение "Истина" или "Ложь". Если выражение принимает значение "Истина" (не равно нулю), то условие фильтра считается выполненным и запись будет показана в таблице или в отчете. В выражениях можно применять имена полей таблиц базы данных и операторы и функции языка Clarion.
  • Кнопка [Проверить выражение] - Проверка выражения фильтра на отсутствие синтаксических ошибок.

Для облегчения написания выражений фильтров в правой части окна имеется ряд кнопок для выбора и вставки в выражение операторов, функций и полей файлов базы данных. При помощи кнопки "Данные" можно вызвать окно "Описание таблиц", в котором можно выбрать поле базы данных. Возможен и другой вариант: можно выбрать поле из таблицы со списком полей, расположенной в правой части окна, при помощи кнопки [Выбрать].

При помощи кнопки [Функции] вызывается окно "Выбор функции", в котором можно посмотреть краткое описание и выбрать функцию языка Clarion:

Окно "Выбор функции языка"

Операторы языка можно вставлять в выражение фильтра "вручную" либо при помощи кнопок группы "Операторы", расположенных в окне "Фильтр" над полем выражения фильтра. Приоритет логических операторов ("and", "or", "not") ниже чем у арифметических операторов ("+", "-", "*", "/"), причем у оператора "логическое ИЛИ" ("or") приоритет ниже чем у оператора "логическое И" ("and"). Если вы не уверены в каком порядке будут выполняться операторы, рекомендуем для явного задания порядка выполнения широко применять скобки "(" и ")".

Чтобы правильно писать фильтры нужно знать обозначения полей базы данных программы. Эти обозначения видны, если подвести курсор мышки к любому полю в окнах программы. Например, в окне «Договор проката» поле «Дней» имеет обозначение tt1:Days. Также нужно хотя бы немного знать язык (операторы, функции) и иметь "математический" склад мышления. Поэтому, часто, пользователям программы самостоятельно писать фильтры трудно... Если вам нужны какие-либо новые фильтры, то проще всего сделать их с нашей помощью. Для этого нужно как можно точнее сформулировать, что именно нужно от фильтра. При этом нужно иметь в виду, что фильтр можно сделать ТОЛЬКО на основе значений тех полей, которые есть в данной таблице (Договора, Кассовая книга, Клиенты, Автомобили и т.п.). Поэтому далеко не любую задачу можно решить при помощи фильтров.

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


Некоторые полезные фильтры для таблицы "Автомобили":

Фильтр "Просрочен ГТО":
car:SpisFlag=0 and car:SrokGTO<>0 and car:SrokGTO < today()
то есть: автомобиль не списан, указан срок ГТО и этот срок меньше сегодняшней даты.

Фильтр "До окончания срока КАСКО осталось меньше 10 дней":
car:SpisFlag=0 and car:EDateKASKO<>0 and car:EDateKASKO < today()+10

Фильтр "Меньше 30 дней до окончания ОСАГО":
car:SpisFlag=0 and car:EDateOSAGO<>0 and car:EDateOSAGO < today()+10

Фильтр "Меньше 500 км до очередного ТО":
car:ProbegTO>0 and car:Probeg > (car:ProbegTO-500)

Чтобы этот фильтр работал, нужно чтобы в записи о Модели автомобиля были заполнены поля «ТО1» - «ТО12». А также нужно делать в окне "Ремонты" записи о выполненных ТО с указанием номера ТО.

Фильтр "Пробег меньше 5000 км": car:Probeg < 5000

"Просроченные автомобили":
car:DateVozvr>0 and (car:DateVozvr<today() or car:DateVozvr=today() and car:TimeVozvr<clock())

"Занятые автомобили": car:DocNumber<>0 and car:SpisFlag=0

"Свободные": car:DocNumber=0 and car:SpisFlag=0

"Возврат сегодня": car:DateVozvr>0 and car:DateVozvr=today()

"Возврат вчера": car:DateVozvr>0 and car:DateVozvr=today()-1

"Возврат завтра": car:DateVozvr>0 and car:DateVozvr=today()+1


Фильтры для таблицы "Договора проката"

"Выдача и возврат сегодня": tt1:Date = today() or tt1:DateVozvr=today()

"Без оплаты": tt1:SumPlat < 0.1

"Должники": tt1:SumPlat < tt1:Sum

"Возврат завтра": (tt1:Date+tt1:Days)=today()+1


Фильтры для окна "Кассовая книга"

Услуга "Перенос багажа": instring('перенос багажа', lower(pla:Note),1,1)<>0

Операция "Оплата залога": pla:ZatID=2

Операции "Оплата за прокат" и "Доплата за прокат": pla:ZatID=1 or pla:ZatID=5

"Дополнительные платежи": pla:ZatID=7

"Только операции с залогом": pla:ZatID=2 or pla:ZatID=3

"Все кроме операций с залогом": ~(pla:ZatID=2 or pla:ZatID=3)

"Оплата наличными": pla:PlatType[1:1] = 'Н'

"Оплата безнал": pla:PlatType[1:1] = 'Б'


Фильтры для таблицы "Клиенты"

"День рождения в ближайшие 7 дней":
date(month(cli:RogDate),day(cli:RogDate),year(today()))>=today() and date(month(cli:RogDate),day(cli:RogDate),year(today())) < today()+7

"День рожденья сегодня":
date(month(cli:RogDate),day(cli:RogDate),year(today()))=today()

"Сумма платежей больше 10000 руб, но скидка равна 0":
cli:SumPlat>10000 and cli:Skidka=0

"Сумма платежей больше 20000 руб, но скидка меньше 5%":
cli:SumPlat>20000 and cli:Skidka < 5

"Черный список": cli:BlackListFlag

"Призы": instring('приз', lower(cli:Note),1,1)>0
(Проверяет наличие слова "приз" в поле "Примечание" клиента)

День рожденья в ближайшие 7 дней:
date(month(cli:RogDate),day(cli:RogDate),year(today()))>=today() and date(month(cli:RogDate),day(cli:RogDate),year(today()))<today()+7

Новые клиенты, за последние 2 недели:
cli:FirstDate >= date( today()-14 )

"Старые" клиенты, заключившие новый договор за последние 2 недели:
cli:FirstDate<>0 and cli:FirstDate < date( today()-14 ) and cli:LastDate >= date( today()-14 )

Содержание документации

×
Скачать "Прокат-Эксперт"

Чтобы скачать программу "Прокат-Эксперт" нужно зарегистрироваться: