Автор Тема: Фильтрация по условию строгой дизъюнкции (исключающее ИЛИ)  (Прочитано 312 раз)

РУНАТВОРЕЦ.РФ

  • Партнёры
  • Посвященный
  • *
  • Сообщений: 85
  • Благодарностей 15
Приветствую вас форумчане!

Сегодня я хочу поделиться с вами изящным решением (а как же иначе  :D сам ведь делал). Речь пойдет о том как отфильтровать записи по условию ИЛИ. Если быть точным - исключающее ИЛИ (в чем разница поясню чуть ниже).
Дело в том что штатным инструментом конструктора Руна мы может отфильтровать только по условию И (если я чего то не знаю, пожалуйста подскажите).
Сегодня я отвечал на вопрос форумчанина kotopes Суть вопроса, как я его понял, сводится к следующему: "как отфильтровать значения по признаку ДО "дата от" и ПОСЛЕ "дата до". Другими словами применить одновременно два фильтра до даты начала и после даты окончания. Если непонятно изъясняюсь - простите сейчас не выходит лучше... В общем с моим решением можно ознакомиться здесь. Файл примера по ссылке.

Теперь, как и обещал, покажу в чем отличие ИЛИ от исключающего ИЛИ. Для этого просто приведу таблицы истинности для первого и второго случая:

ИЛИ
0+0=0
1+0=1
0+1=1
1+1=1

Исключающее ИЛИ (мой вариант)
0+0=0
1+0=1
0+1=1
1+1=0

GOD

  • Главный модератор
  • Посвященный
  • **
  • Сообщений: 66
  • Благодарностей 3
Я нифига не понял, но выглядит КРУТО!  :)

Уверен что работает так как надо и задумано.
... звонок телефона...
— Алло, техподдержка. Вы пробовали выключить и снова включить?

РУНАТВОРЕЦ.РФ

  • Партнёры
  • Посвященный
  • *
  • Сообщений: 85
  • Благодарностей 15
Признаю, что выглядит запутанно  :P. Безусловно требуются пояснения. Я обязательно их подготовлю, но чуть позже. Сейчас вкратце:
1. Если в форме "Сотрудники не в отпуске" в фильтре ввести "работает", то будут отображены только те работники, у которых на текущую дату нет открытых больничных листов и они не в отпуске;
2. Поле "результат для фильтра" по сути использует функцию склеивания двух текстовых сток и принимает значения:
(пусто) & "работает" - результат если больничный на текущую дату уже закрыт,
"работает" & (пусто) - результат, если больничный на текущую дату еще не открыт,
(пусто) & (пусто) - результат, если на текущую дату приходится период больничного.
« Последнее редактирование: Июнь 27, 2016, 11:04:43 am от FROST »

kotopes

  • Ученик
  • *
  • Сообщений: 9
  • Благодарностей 0
Спасибо, посмотрю,на днях отпишу.

 

Яндекс.Метрика