Задача [D1]: Фильтры в «Документах»

Формулировка проблемы: необходима реализация фильтров в дереве раздела «Документы» модуля «Хранилище».

Решение: Для каждого из корневых веток раздела «Документы» — «Журналы», «Дела», «Все» (а также их подветок) ввести возможность создавать специализированные подфильтры. Каждый подфильтр содержит:

Содержимое корневых веток остаётся неизменным, за исключением ветки «Журналы» и «Дела» — они становятся выбираемыми и отображают все документы из всех доступных пользователю журналов и дел соответственно. Содержимое первого уровня в этих ветках сортируется так — вначале основные объекты (журналы, дела), затем — подфильтры (по времени создания).

Внутри каждой ветки, соответствующей журналу, можно также создавать подфильтры. Уже имеющиеся в них подфильтры становятся редактируемыми. Набор доступных условий для подфильтров, создаваемых внутри журналов разных типов должен соответственно отличаться. Список специфических для каждого типа журнала полей приведён в «Спецификации Arta Synergy», раздел 9.2.1.

Подфильтры могут быть созданы внутри корневых веток либо других подфильтров при помощи контекстного меню — для основных фильтров «Добавить фильтр» (добавляет подфильтр), для подфильтров — «Добавить фильтр» (добавляет вложенный подфильтр), «Редактировать фильтр» (можно добавить, удалить и изменить содержимое условий фильтра) и «Удалить фильтр» (удаляет выделенный подфильтр). При создании нового подфильтра по умолчанию не добавляется ни одного условия. Каждое из условий можно добавить только один раз. При добавлении нескольких условий подфильтра правила, описанные в них, действуют одновременно (логическое «И»).

Рядом с названием подфильтра в дереве в скобках указывается общее количество документов, которые подпадают под него.

Имеющийся раздел «Фильтры» (далее «поисковый фильтр») в левом нижнем углу вида «Документы» необходимо доработать следующим образом:

Элементы управления:

  1. выбор периода по дате регистрации документа: «Все», «Неделя», «Месяц», «Квартал» и «Произвольный период», при активации которого становятся активными два поля — с датой начала и датой окончания.

Поведение: если в текущем выделенном в дереве подфильтре установлено условие «Период регистрации», то при активации поискового фильтра значения элементов управления устанавливаются в те же, что указаны в подфильтре. При изменении значений поискового фильтра подфильтр, к которому они применяются, выделяется звёздочкой (*).

Условия для подфильтров
  • «Краткое содержание» — регистронечувствительно, соответствие части значения поля «Кр. содерж.» РКК любому из списка тэгов (связь «Или» для тэгов). Несоотвествие части значения поля «Кр. содерж.» РКК каждому из списка тэгов (связь типа «И»).

  • «Номер» — регистронечувствительно, соответствие части значения поля «Номер» РКК любому из списка тэгов (связь «Или» для тэгов). Несоотвествие части значения поля «Кр. содерж.» РКК каждому из списка тэгов (связь типа «И»).

  • «Номер исх.» — регистронечувствительно, соответствие части значения поля «Номер исх.» РКК любому из списка тэгов (связь «Или» для тэгов). Несоотвествие части значения поля «Кр. содерж.» РКК каждому из списка тэгов (связь типа «И»).

  • «Корреспондент» — регистронечувствительно, соответствие части значения поля «Корреспондент» РКК любому из списка тэгов (связь «Или» для тэгов). Несоотвествие части значения поля «Кр. содерж.» РКК каждому из списка тэгов (связь типа «И»).

  • «Корреспондент (орг.)» — регистронечувствительно, соответствие части значения поля «Корреспондент (орг.)» РКК ллюбому из списка тэгов (связь «Или» для тэгов). Несоотвествие части значения поля «Кр. содерж.» РКК каждому из списка тэгов (связь типа «И»).

  • «Тип документа» — при соответствии любому из выбранного произвольного набора настроенных в системе типов документов.

  • «Автор» — соответствие любому из выбранного произвольного набора пользователей системы.

  • «Зарегистрировал» — соответствие любому из выбранного произвольного набора пользователей системы.

  • «Исполнитель» – соответствие значения поля «Определить исполнителя» РКК любому из выбранного произвольного набора пользователей системы.

  • «Длительность (раб. дн.)» – два поля ввода натуральных чисел, «От» и «До». Значение одного из этих полей может быть пустым.

  • «Дата регистрации» – выбор одного из вариантов: «Все», «Неделя», «Месяц», «Квартал» и «Произвольный период». При выборе варианта «Указать» появляется возможность указать две даты - начала и завершения произвольного периода.

  • «Дата исх.» – выбор одного из вариантов: «Все», «Неделя», «Месяц», «Квартал» и «Произвольный период». При выборе варианта «Указать» появляется возможность указать две даты — начала и завершения произвольного периода.

  • «Статус документа» – соответствие любой из комбинации статусов документа: «Черновик», «На регистрации», «На исполнении», «Истекает срок», «Просрочен», «Завершён».

  • «Свойства» — соответствие любой из комбинации опций «Контрольный», «Бракованный».

В случае создания вложенного в подфильтр подфильтра к дочернему подфильтру применяются условия родительского подфильтра (замечание: таким образом можно создать структуру подфильтров, не соответствующих ни одному документу, и это не будет являться ошибкой в Synergy).

Макет дизайна:

Рисунок 453. Набор условий фильтров документов (содержимое текстовых фильтров)

Набор условий фильтров документов (содержимое текстовых фильтров)

Рисунок 454. Набор условий фильтров документов (продолжение)

Набор условий фильтров документов (продолжение)