Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Сортировка структурного кода

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

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.