Имя: Пароль:
1C
1С v8
Сортировка структурного кода
0 ddok
 
06.07.21
12:04
Здравствуйте.

Подкиньте, пожалуйста, идею сортировки (по возрастанию/убыванию) структурного кода вида "1.2.3".

1С подобный код (строковый тип) не совсем правильно сортирует, например по возрастанию:
1.01.01
1.02.3
1.1.3
1.11.1
1.2.11

а должно быть:
1.01.01
1.1.3
1.02.3
1.2.11
1.11.1
1 mikecool
 
06.07.21
12:06
(0) вопрос - а кто, кроме 1с, сортирует так, как надо?
имхо - никто
2 ДенисЧ
 
06.07.21
12:06
Разбери в ТЗ с преобразованием к числу, сортируй, собирай обратно
3 ДенисЧ
 
06.07.21
12:06
(1) Все, кому надо ))
4 mikecool
 
06.07.21
12:06
надо приводить код к такому виду, чтобы он мог сортироваться как надо
5 Fragster
 
гуру
06.07.21
12:10
за код 01 и 1 на одном уровне надо отрывать кое что кое кому
6 Вафель
 
06.07.21
12:11
храни реквизит для сортировка 001.001.001
7 1Сергей
 
06.07.21
12:12
переименовать вс 01 в 1, 02 в 2 и т.д.
Кто будет делать так и дальше - пальцы прищемить дверью
8 Вафель
 
06.07.21
12:12
а кстати почему 02 < 1 ?
9 ДенисЧ
 
06.07.21
12:12
(8) По правилам сравнения строк ))
10 Вафель
 
06.07.21
12:21
(8) Это я подумал что должно быть так, а это как есть
11 mikecool
 
06.07.21
12:23
потом появится 01.01.1 и т.п.
12 fisher
 
06.07.21
12:29
(0) Для правильной сортировки тебе в любом случае придется приводить код к одинаковой длине частей с ведущими нулями. Если не хочешь делать это каждый раз при сортировке, то лучше это делать заранее. Например писать нормализованный структурный код в доп-реквизит, по которому и сортировать.
13 Малыш Джон
 
06.07.21
12:30
(0) если такая потребность возникает постоянно, то имеет смысл хранить параллельно нормированный код (по типу 1.02.03 -> 001.002.003) и сортировать по нему
14 cathode
 
06.07.21
12:38
(0) Можно сделать на встроенном языке.
Алгоритм называется "естественная сортировка" (natsort).
То, что в 1С и вообще везде - это лексикографическая сортировка, существенно более простая в реализации.