Формулировка проблемы: необходима возможность изменять сортировку в самом журнале, а не только в подфильтрах журнала.
Решение.
Разделим данную задачи на 4 подзадачи.
Необходимо добавить новую группу опций в настройки журналов в
конфигураторе (Документооборот -> Журналы): лейбл
Сортировать по полю
и условия сортировки.
Условие сортировки представляет собой набор параметров, каждый из
которых содержит списки Поле сортировки
,
Направление сортировки
и
Соединение
.
Параметры условия сортировки между собой можно соединять только оператором «затем по» (логическое «И»). Новый параметр можно добавить, выбрав в списке соединения значение «затем по» (по умолчанию там указано пустое значение), при этом появляется новая строка, связанная с предыдущей через логическое «И». После этого из списка соединения пункт с пустым значением пропадает - больше его выбрать нельзя. Удалить параметр сортировки (кроме первого) можно, нажав на соответствующую иконку «корзины». Если удаляемый параметр является последним, то у предыдущего параметра значение соединения выставляется в пустое.
Примечание: вышеописанное поведение соединения нескольких условий аналогично таковому в настройках процесса «условный переход».
Выпадающий список Поле сортировки
должен
содержать следующие параметры:
Краткое содержание
Номер
Тип документа
Статус
Дата регистрации
- выбран по умолчанию
Автор
Зарегистрировал
Исполнитель
Длительность (раб.дн.)
далее идут динамически формируемые пункты в формате
Элемент номера №п/п -
, и далее
соответствие частям шаблона номера, выбранного для данного
журнала, исключая
стандартные
счетчики даты регистрации
Выпадающий список Направление сортировки
должен
содержать:
по возрастанию
по убыванию
- выбран по умолчанию
Выпадающий список Соединение
должен содержать:
пустое значение - выбран по умолчанию
затем по
Корневым фильтрам документов («Журналы», «Дела», «Все») и
подфильтрам первого уровня (подфильтры журналов, дел, «Мои»,
«Полученные», «Отправленные») в контекстное меню необходимо
добавить пункт Редактировать фильтр
. Данный
пункт вызывает диалоговое окно редактирования фильтра, который
должен содержать только параметры сортировки:
Флажок
Использовать настройки сортировки по умолчанию
(по умолчанию, включен) - присутствует только для подфильтров
(в т.ч. пользовательских) журналов.
Для включенного флажка:
все остальные настройки сортировки недоступны для редактирования (автоматически заполняются значения из конфигуратора);
сортировка должна осуществляться согласно настройкам данного журнала в конфигураторе;
все изменения в условиях сортировки, внесенные в конфигураторе, применяются автоматически.
Для выключенного флажка, соответственно:
настройки сортировки становятся доступными для редактирования (автоматически устанавливаются значения по умолчанию);
сортировка в данном журнале должна осуществляться согласно настроенным в данном диалоге условиям;
все изменения в условиях сортировки, внесенные в конфигураторе, не применяются.
Для корневых фильтров «Журналы» и «Дела», а также для
подфильтров дел выпадающий список
Поле сортировки
должен содержать те же
параметры из конфигуратора, за тем исключением, что должны
отсутствовать динамически формируемые пункты.
Для подфильтров журналов выпадающий список
Поле сортировки
должен содержать все те же
параметры из конфигуратора.
Для фильтра документов пользователя «Все», а также подфильтров
«Мои», «Полученные», «Отправленные» выпадающий список
Поле сортировки
должен содержать все те же
параметры из конфигуратора, за следующими исключениями:
должны отсутствовать динамически формируемые пункты;
кроме того, для фильтра:
«Полученные» - должны добавиться пункты
Дата создания
и
Дата получения
;
«Отправленные» - должны добавиться пункты
Дата создания
и
Дата отправки
;
«Все» и «Мои» - должны добавиться пункты
Дата создания
и
Дата получения/отправки
.
Примечание:
Дата получения/отправки
означает, что в
сортировке будут принимать участие либо дата получения (при
отсутствии даты отправки), либо дата отправки (соответственно, при
отсутствии даты получения), либо максимальная из обеих дат (если у
документа есть обе даты).
Кроме того, необходимо скорректировать диалог редактирования пользовательских подфильтров: параметры сортировки заменить на вышеописанный, остальное согласно макетов.
Сортировка списка документов должна осуществляться по следующему алгоритму.
Берется первый критерий сортировки:
сортировка по полю Дата регистрации
для
журналов должна осуществляться по алгоритму, описанному в
задаче
#7065,
а именно: сначала отображаются документы без номера,
отсортированные по дате создания, а затем - документы с
номером, отсортированные по значению дополнительного
счетчика;
сортировка по полю Дата регистрации
(для дел и документов) должна осуществляться
непосредственно по значениям даты
(timestamp
[9]);
сортировка по полям Дата создания
,
Дата получения
,
Дата отправки
,
Дата получения/отправки
должна
осуществляться непосредственно по значениям даты и времени
(timestamp
[10]);
сортировка по динамическим пунктам, содержащим числовые
счетчики, а также полю
Длительность (раб.дн.)
должна
осуществляться непосредственно по числовому значению поля;
сортировка по динамическому пункту, содержащему элементы
«*
», осуществляется по особому
алгоритму, описанному ниже;
сортировка по полю Статус
осуществляется в порядке, определенном следующей таблицей
(в указанной таблице направление сортировки -
по возрастанию
):
Статус |
---|
Черновик |
На регистрации |
На исполнении |
Просроченные |
Завершен |
Отклонен |
сортировка остальных полей, включая по динамическим пунктам, содержащим строковые счетчики должна осуществляться лексикографически (поразрядно).
Если в результате сортировки по первому критерию имеется несколько документов с одинаковым номером по порядку сортировки, то подключается второй критерий. Между собой такая группа документов сортируется по тому же алгоритму из п.1.
Если в результате сортировки по всем настроенным критериям все также имеется несколько документов - последним условием необходимо считать:
для документов журналов -
Дата регистрации по убыванию
, а при
отсутствии даты регистрации -
Дата создания по убыванию
;
для документов дел -
Дата создания по убыванию
;
для документов пользователя:
для корневого фильтра «Все», а также подфильтра «Мои»
-
Дата получения/отправки, по убыванию
;
для подфильтра «Полученные» -
Дата получения, по убыванию
;
для подфильтра «Отправленные» -
Дата отправки, по убыванию
;
при отсутствии указанных полей -
Дата создания по убыванию
.
Примечание: для документов пользователя (раздел «Все») непрочитанные документы должны быть выше прочитанных, а уже внутри каждой из этих групп должно учитываться настроенное условие сортировки.
Алгоритм специфической сортировки элемента
номера, содержащего «*
»
Первый критерий сортировки (приоритет числам):
сначала идут все пустые записи (не содержащие пробелы, а именно пустые);
набор цифр[11], идущих подряд до первого вхождения «не цифры» либо до конца записи, интерпретируется как число, причем все начальные нули и символы не учитываются - сортировка осуществляется по значению этих чисел;
записи, после чисел у которых идут «не цифры», сортируются лексикографически (поразрядно).
Второй критерий сортировки:
далее идут остальные записи[12], сортировка лексикографическая (поразрядная).
Пример сортировки по значениям даты/времени по возрастанию:
1 апреля 2014 2 апреля 2014 13 апреля 2014 1 мая 2014 3 мая 2014 11 мая 2014
Пример специфической сортировки по возрастанию:
#пустая запись 1 1А // их порядок будет зависеть №1А // от следующих условий либо а1А // от доп.счетчика 1Б 1.1 2 /// их порядок также будет зависеть m2 /// от следующих условий либо n2 /// от доп.счетчика 03 10 100 m100a #запись, содержащая пробел $ & A B Z a b z А Б Я а б я
При обновлении системы в конфигураторе всем журналам должно
установиться значение по умолчанию:
Дата регистрации, по убыванию
.
В клиентской части должны установиться следующие значения по умолчанию:
для корневых фильтров документов («Журналы», «Дела»), а также
для подфильтров дел -
Дата регистрации, по убыванию
;
для подфильтров журналов - флажок
Использовать настройки сортировки по умолчанию
должен быть включен;
для корневого фильтра «Все», а также подфильтра «Мои» -
Дата получения/отправки, по убыванию
;
для подфильтра «Полученные» -
Дата получения, по убыванию
;
для подфильтра «Отправленные» -
Дата отправки, по убыванию
.
Примечание: для документов пользователя (раздел «Все») непрочитанные документы должны быть выше прочитанных, а уже внутри каждой из этих групп должно учитываться настроенное условие сортировки.
[11] Диапазон в таблице символов Unicode: 0030 - 0039 (в таблице символов ASCII: 48 - 57)
[12] Все символы из таблицы символов Unicode, начиная с 0000, исключая 0030 - 0039 (http://unicode-table.com/ru/#tagbanwa)