Выстроить номера в ТЗ по иерархии. #367090


#0 by ice777
Вот это мучает: есть записи вида 1. 1.2 1.2.1 1.3 2. 2.1 и т.д. Как их отсортировать чтобы 2.13 не стояло до 2.2.1, например? Чтобы не городить синтаксический разбор такого номера. Приходили в голову идеи добавить еще колонку, невидимую, где дополнить нолями слева каждый, назовем его так, разряд (цифры между точками и по краям я так назвал). Есть ли стандартный механизм в 1с v8 для подобной сортировки? Необязательно в ТЗ.
#1 by Maxus43
а Сортировать не катит?
#2 by ice777
Так оно считает, что 2.13 меньше 2.2 и так во всех таких случаях :(
#3 by Fragster
сделать так, чтобы ширина полей между точками была фиксированная, а затем Сортировать
#4 by Fragster
+ "2.2"  => "2.02" или "2. 2"
#5 by ice777
Fragster: Ну это тоже, что и нулями слева дополнить. А способ сделать это без длинного кода знаешь?
#6 by Irbis
Добавь несколько колонок, по количеству уровней иерархии.
#7 by Fragster
все остальное - долго, дорого и хреново...
#8 by ice777
Irbis: да уж. счаз нагорожу сущностей, так потом и сам не разберусь ;)
#9 by ice777
Сколько уровней иерархии - неизвестно. Сколько разрадность каждой - тоже неизвестно. Остается писать синт. разбор и реализовать по или . И разрядность замерять еще впридачу :((
#10 by HEKPOH
"Сколько уровней иерархии - неизвестно. Сколько разрадность каждой - тоже неизвестно." - рекурсия в помощь
#11 by Fragster
а что, 1 проход - заполняешь список с максимальными разрядами, второй - дополняешь номера - затем сортируешь... или просто - создаешь колонку - в нее прописываешь, как будто разрядность - заведомо большая (скажем 10), в 1 проход ее заполняешь - сортируешь по ней... при изменении кода - просто меняешь дополнительно значение в той колонке
#12 by ice777
А мне что в голову лезет.. что может символ какой вперить везде вместо точки, чтоб заведомо "больше" цифр при сортировке был.. А? И дописывать его еще и в конце.. Надо проверить или не стоит?
#13 by Fragster
не стоит... не взлетит
#14 by ice777
Не, взлетит, если я скажем, каждую точку заменю 10 символами "больше" цифры. Вот и реализация для мах 10-разрядной нумерации.
#15 by ice777
только где нарыть человеческую unicode (она вроде в 1С используется)?
#16 by ice777
Проверить хочу
#17 by Fragster
ты не понял? а как сортировать: 2*2 20*...?
#18 by ice777
как строку. только я подумал.. все равно надо Дополнять в каждом разряде, а не тупо вставлять. все вернулось на круги своя :(
#19 by Fragster
ты разрядность с уровнем путаешь. дополнять до разрядности каждый уровень надо :)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С