|  15.09.2014, 15:47 | #1 | 
| Участник | Естественная сортировка 
			
			Добрый день, коллеги!  Подскажите существует ли в Аксапте метод для естественной сортировки. А1 А2 А3 А10 А20 А103 | 
|  | 
|  15.09.2014, 15:57 | #2 | 
| Участник | 
			
			На поле в таблице установите свойство Adjustment на Right.
		 | 
|  | |
| За это сообщение автора поблагодарили: axotnik88 (1). | |
|  15.09.2014, 16:23 | #3 | 
| Участник | |
|  | 
|  15.09.2014, 16:25 | #4 | 
| Участник | 
			
			Можно записать во временную таблицу, отсортировать и обратно в контейнер.
		 | 
|  | 
|  15.09.2014, 16:26 | #5 | 
| Участник | |
|  | 
|  15.09.2014, 16:27 | #6 | 
| Участник | 
			
			Я бы лучше запись положил во времянку по ключу А00001 А00002 А00003 А00010 А00020 А00103 (завести поле в котором писать такие значения, как преобразовать думаю сами догадаетесь) а на этом поле сделать индекс. Тогда гарантировано отсортирует как вам надо. | 
|  | |
| За это сообщение автора поблагодарили: axotnik88 (1). | |
|  15.09.2014, 16:42 | #7 | 
| Участник | 
			
			еще появился вариант с Set Set setOf = new set(Types::RString); Когда попробую отпишусь. Всем спс. | 
|  | 
|  15.09.2014, 17:25 | #8 | 
| Участник | 
			
			Если не ошибаюсь, то нигде не гарантировано что ключи в set или map сортируются по возрастанию.  В ax 3.0 был ключ командной строки который приводил к тому что ключи в мапах сортировались в обратном порядке (кстати не факт что сортировка совпадет с сортировкой в БД ) Не знаю зачем мог бы быть полезен этот ключ, но для себя реши что нельзя в алгоритмах в аксапте закладываться на отсортированность ключей в мапах. | 
|  | |
| За это сообщение автора поблагодарили: belugin (3), S.Kuskov (1). | |
|  15.09.2014, 20:31 | #9 | 
| Участник | 
			
			вот в этой статье есть код "естественной сортировки" http://iproc.ru/parallel-programming/lection-6/
		 | 
|  | 
|  16.09.2014, 12:42 | #10 | 
| Участник | Цитата: Достаточно лишь учитывать что сортировка в БД и в среде исполнения не совпадает 100% по некоторым символам.Ну так это и таблиц временных и RecordSortedList касается (Хотя за RecordSortedList не скажу достоверно - не проверял) | 
|  | 
|  16.09.2014, 12:54 | #11 | 
| Участник | 
			
			Там где нужна сортировка - использую временную табличку или recordSortedList (он живет в памяти и работает с той же скоростью что и мап - поиск, извлечение элемента  и.т.п.)
		 | 
|  | 
|  16.09.2014, 13:03 | #12 | 
| Участник | 
			
			Ну, может кто-то встречал в документации по Аксапте какие-либо гарантии касательно сортировок по ключам мапов, сетов и.т.п. Тогда скажите. Это было бы удобно. Но я такого не встречал. | 
|  | 
|  17.09.2014, 13:34 | #13 | 
| Administrator | Цитата: Цитата: 
		
			The Set class is used for the storage and retrieval of data from a collection in which the values of the elements contained are unique and serve as the key values according to which the data is automatically ordered.
		
	 
				__________________ Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me | 
|  | |
| За это сообщение автора поблагодарили: Logger (3). | |
|  17.09.2014, 13:39 | #14 | 
| Administrator | 
			
			Кстати, эта сортировка добавляет проблем в Product Builder. Там во время запуска конфигурации все данные из базы загружаются в мапы и сеты. После долгого тестирования удалось обнаружить, что именно во время вставки данных в Map происходят самые большие потери в производительности. Судя по всему, сортировка эта происходит именно в момент вставки данных (что, впрочем, логично), а алгоритмы сортировки и хранения мапов далеки от идеала.
		 
				__________________ Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me | 
|  | 
|  17.09.2014, 14:04 | #15 | 
| Участник | 
			
			Странно. Наверно там данных было чуть менее, чем дофига. А что могло бы быть быстрее на ваш взгляд ? Я думаю если данные выбирать из базы и оперировать в памяти то мап это самое быстрое из возможных. Ну можно еще завести массив container-ов. Там не будет потерь на сортировку. И память сразу выделяется пачками. За счет этого быстрее. Но зато ограничения на тип ключа (int32). Либо данные из базы не выбирать в память, а попробовать (если это возможно) SQL запросами массовую обработку делать. | 
|  | 
|  17.09.2014, 14:15 | #16 | 
| Administrator | 
			
			Мне трудно сказать, что могло бы быть быстрее, так как я не знаю, что именно там напрограммировано сейчас. В принципе, различные алгоритмы для сортировки известны, надо только их аккуратно реализовать. Product Builder в целом так устроен, что при количестве конфигурируемых переменных больше 20-30, данных уже будет до хрена. Опять же, не могу порекомендовать какие-то изменения алгоритма, так как менять надо идеологию, как мне кажется. Майкрософт, похоже, с этим согласен, так как начиная с 2012 версии Product Builder будет отмирать. А конкретно эту проблему со вставками удалось решить, немного поменяв алгоритм, чтобы количество этих самых вставок в мапы уменьшить. Если есть практический интерес - давайте откроем новую тему, и я расскажу. Но, насколько я понимаю, этим модулем всё равно мало кто пользуется. 
				__________________ Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me | 
|  | |
| За это сообщение автора поблагодарили: Logger (3), axotnik88 (1). | |
|  | 
|  Похожие темы | ||||
| Тема | Ответов | |||
| Сортировка в гриде с двумя DataSource | 15 | |||
| Сортировка в Query в отчете | 7 | |||
| FormListControl сортировка | 2 | |||
| Сортировка в гриде | 15 | |||
| Глючит сортировка записей | 5 | |||
| 
 |