"Человеческая" сортировка в таблицах значений


«Человеческая» сортировка в таблицах значений. Оформлено отдельной функцией, добавить можно куда угодно.

Понадобилась нормальная, вменяемая сортировка в Бланке Товарного Наполнения. Чтобы не ходить с места А1 на А10, вместо А2. На сайте не нашел. Сделал на основе http://www.davekoelle.com/alphanum.html Сама обработка содержит пример сортировки текста:


z7.doc
z4.doc
z10.doc
z14.doc
z101.doc
z11.doc
z8.doc
z12.doc
z13.doc
z15.doc
z1.doc
z18.doc
z19.doc
z2.doc
z20.doc
z3.doc
z100.doc
z5.doc
z17.doc
z6.doc
z102.doc
z16.doc
z9.doc
1.2.3.4.123
123.1.2.3
2.2.3.4.123
11.2.3.4.123
Ängström
Ångström
Angstrom
Ängström12.3
Ångström12
Angstrom2
A1
A11
A2
A10

обычным и новым методом.

Для сортировки каждый элемент разбивается на массив из идущих подряд букв и цифр. Например «аа12бб» будет разбит на массив «аа»,»12″,»бб». Во время разбития определяется максимальная длина цифровой части и все цифры в дальнейшем подгоняются форматом под эту длину. Потом массив объединяется в строку и по этой строке, размещенной в дополнительной колонке таблицы значений производится сортировка стандартной функцией.

Для использования в других обработках необходимо скопировать две функции: Разделитель(стр2) и СортироватьНОРМ(ТЧ,номерколонки), также обратите внимание, что в сортируемой таблице значений не должно быть колонки «Метка», либо поменяйте название вспомогательной колонки в функции.

Тестировалось на конфигурации КА 1.1.77.1

1 Comment

  1. Артано

    Красиво душевно. Не знаю баян или нет, но самого иногда раздражает «тупая» сортировка по строке. Отдельно отмечаю лаконичное, но исчерпывающее оформление, ссылку на источники. Хорошая работа

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *