Задача [#8622]: Сортировка в таблице реестра по значениям столбцов типа дата и число

Формулировка проблемы: на данный момент сортировка в таблице реестра по значениям столбцов типа дата и число осуществляется лексикографически[21]. Это приводит к тому, что, например, число 10 следует за числом 1, а не за числом 9. Необходима более точная сортировка для дат и чисел, чтобы число 10 следовало за числом 9, а не числом 1.

Связанные задачи: 50.7998 и 50.8074

Решение: алгоритм сортировки таблицы реестра необходимо изменить следующим образом.

Для начала определим, на чем будет основана сортировка в реестрах. Любой компонент формы реестра, попадающий в «Поля формы реестра» и, соответственно, в столбцы таблицы, имеет значение и текстовое представление этого значения.

Для столбца таблицы реестра, содержащего компонент формы Дата/время, сортировка по убыванию/по возрастанию должна осуществляться не по текстовому представлению, а непосредственно по значениям даты (timestamp[22]).

Пример сортировки по возрастанию:

    1  апреля 2014
    2  апреля 2014
    13 апреля 2014
    1  мая    2014
    3  мая    2014
    11 мая    2014

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

Первый критерий сортировки (приоритет числам):

Второй критерий сортировки:

Сортировка по убыванию, соответственно, осуществляется наоборот.

Пример сортировки по возрастанию для указанного алгоритма:

    #пустая запись
    1
    1а
    1б
    1.1
    2
    03
    10
    100
    #запись, содержащая пробел
    $
    &
    A
    B
    C
    Z
    a
    b
    c
    m100a
    m1a
    m2
    n1a
    z
    А
    Б
    В
    Я
    а
    б
    в
    я


[23] Диапазон в таблице символов Unicode: 0030 - 0039 (в таблице символов ASCII: 48 - 57)

[24] Все символы из таблицы символов Unicode, начиная с 0000, исключая 0030 - 0039 (http://unicode-table.com/ru/#tagbanwa)